pandas 如何在python dataframe列中仅对数字进行四舍五入(对象混合)

xhv8bpkk  于 2022-12-02  发布在  Python
关注(0)|答案(2)|浏览(340)

我有一个名为“df”的 Dataframe 作为图片。在这个 Dataframe 中,有“null”作为对象(dtype)和数字。我希望只对多列中的数字值进行舍入(2)。我已经编写了这段代码,但一直得到“TypeError:'int'对象是不可迭代的”作为TypeError。* 第一行代码是将na转换为“null”,因为其他数字需要是数字dtype。

df['skor_change_w_ts']=pd.to_numeric(df['skor_change_w_ts'], errors='coerce').fillna("null", downcast='infer')

for i in len(df):
    if df['skor_change_w_ts'][i] is float:
        df['skor_change_w_ts'][i]=df['skor_change_w_ts'][i].round(2)

在多列中只对数值进行舍入(2)的最简单代码是什么?

lnxxn5zx

lnxxn5zx1#

fillna之前的round

df['skor_change_w_ts'] = (pd.to_numeric(df['skor_change_w_ts'], errors='coerce')
                             .round(2).fillna("null", downcast='infer')
                          )

输入示例:

df = pd.DataFrame({'skor_change_w_ts': [1, 2.6666, 'null']})

输出量:

skor_change_w_ts
0              1.0
1             2.67
2             null
mrfwxfqh

mrfwxfqh2#

你根本不需要调用.fillna(),胁迫就会帮你做到这一点。

df['skor_change_w_ts'] = (pd.to_numeric(df['skor_change_w_ts'], errors='coerce').round(2)

应该可以。

相关问题