用点Pandas替换逗号

时间:2016-10-17 09:51:27

标签: python pandas

鉴于以下数组,我想用点替换逗号:

class onullstream
    : private virtual nullbuf
    , public std::ostringstream {
public:
    nullstring()
        : std::ios(this)
        , std::ostringstgream() {
        this->std::ostream::rdbuf(this);
    }
};

我一直在尝试不同的方式,但我无法弄清楚如何做到这一点。 另外,我已将其导入为array(['0,140711', '0,140711', '0,0999', '0,0999', '0,001', '0,001', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', 0L, 0L, 0L, 0L, '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,1125688', '0,140711', '0,1125688', '0,140711', '0,1125688', '0,140711', '0,1125688', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711', '0,140711'], dtype=object) DataFrame,但无法应用该功能:

pandas

有任何建议如何解决这个问题?

3 个答案:

答案 0 :(得分:14)

您需要将操作结果分配给操作,因为操作不在适当位置,除了您可以使用applystackunstack以及{{3}更快地做到这一点:

In [5]:
df.apply(lambda x: x.str.replace(',','.'))

Out[5]:
          1-8        1-7
H0   0.140711   0.140711
H1     0.0999     0.0999
H2      0.001      0.001
H3   0.140711   0.140711
H4   0.140711   0.140711
H5   0.140711   0.140711
H6          0          0
H7          0          0
H8   0.140711   0.140711
H9   0.140711   0.140711
H10  0.140711  0.1125688
H11  0.140711  0.1125688
H12  0.140711  0.1125688
H13  0.140711  0.1125688
H14  0.140711   0.140711
H15  0.140711   0.140711
H16  0.140711   0.140711
H17  0.140711   0.140711
H18  0.140711   0.140711
H19  0.140711   0.140711
H20  0.140711   0.140711
H21  0.140711   0.140711
H22  0.140711   0.140711
H23  0.140711   0.140711

In [4]:    
df.stack().str.replace(',','.').unstack()

Out[4]:
          1-8        1-7
H0   0.140711   0.140711
H1     0.0999     0.0999
H2      0.001      0.001
H3   0.140711   0.140711
H4   0.140711   0.140711
H5   0.140711   0.140711
H6          0          0
H7          0          0
H8   0.140711   0.140711
H9   0.140711   0.140711
H10  0.140711  0.1125688
H11  0.140711  0.1125688
H12  0.140711  0.1125688
H13  0.140711  0.1125688
H14  0.140711   0.140711
H15  0.140711   0.140711
H16  0.140711   0.140711
H17  0.140711   0.140711
H18  0.140711   0.140711
H19  0.140711   0.140711
H20  0.140711   0.140711
H21  0.140711   0.140711
H22  0.140711   0.140711
H23  0.140711   0.140711

这里的关键是分配结果:

df = df.stack().str.replace(',','.').unstack()

答案 1 :(得分:1)

如果您需要在特定列中用点替换逗号,请尝试

    data["column_name"]=data["column_name"].str.replace(',','.')

避免'str'对象没有属性'str'错误。

答案 2 :(得分:0)

如果您使用read_csv进行读取,则可以使用decimal参数指定其如何解释小数。

例如

your_df = pd.read_csv('/your_path/your_file.csv',sep=';',decimal=',')

来自man pages

  

thousands:str,可选的千位分隔符。

     

小数:str,默认为“。”识别为小数点的字符   (例如,对于欧洲数据,请使用“,”。