python - 在数字后签名 "-"

标签 python pandas for-loop

我有一个数据框,其中包含一列数字,如下所示:

 1. 34.5
 2. 345.2
 3. 898.4-
 4. 87.4

...

 n. 847.3-

列是str,现在我已经编写了循环整个列(大约1900万行)的代码。 我问是否有人知道更快的方法,将“-”放在前面并将str更改为数字

我的代码:

for i, row in frame.iterrows():
    Val=row[9]
    if row[9].find("-") > 0 :
        Val="-"+row[9].replace("-","")
        frame.iloc[i,9]=Val
frame[frame.columns[9]]=pd.to_numeric(frame[frame.columns[9]]

最佳答案

您可以直接借助str来完成:

frame.loc[frame[col_name].str[-1] == '-', col_name] = '-' + frame.loc[
                    frame[col_name].str[-1] == '-', col_name].str.replace('-', '')
frame[col_name] = frame[col_name].astype('float')

关于python - 在数字后签名 "-",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709254/

相关文章:

python - 使用 matplotlib 将多个 Dataframe 写入同一个 PDF 文件

python - 如何使用 Pandas 对数据帧索引进行重新排序/排序?

bash - 在 Bash 中循环遍历字母表

python - 如何使用 Python 打开 HDFS 中的 parquet 文件?

python - 计算列表中对象出现的次数

python - 基于特定列属性的 Pandas fillna()

java - 调试二十一点程序? ( java )

java - break命令不会停止循环

python - 如何编写一个Python程序来读取输入并将其转换为带有 turtle 图形的预定义14段字符?

python - 使用 Python gtk3 在 X 上进行全局键绑定(bind)