开发者问题收集

如何仅对带有对象混合的python数据框列中的数字进行舍入

2022-11-30
699

在此处输入图片说明

我有一个名为“df”的数据框,如图所示。 在这个数据框中,有“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)?

2个回答

roundfillna 之前:

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
mozway
2022-11-30

您根本不需要调用 .fillna(),coerce 会为您完成该操作。

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

应该可以解决问题。

big_water_guy
2022-11-30