在没有小数位的列中的结果?

2024-06-12 02:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我浏览了很多帖子,但没有一个解决方案可以在我的代码中实现:

x4 = x4.set_index('grupa').T.rename_axis('DANE').reset_index().rename_axis(None,1).round()

之后我得到结果数据帧:

             DANE  BAKALIE  NASIONA  OWOCE  WARZYWA
0           ilosc      5.0     94.0   61.0    623.0
1     marza_netto      7.0    120.0   69.0    668.0
2  marza_procent2     32.0     34.0   29.0     27.0

但我想收到:

             DANE  BAKALIE  NASIONA  OWOCE  WARZYWA
0           ilosc        5       94     61      623
1     marza_netto        7      120     69      668
2  marza_procent2       32       34     29       27

我尝试了replace('.0','')int(round()astype(int),但是没有得到很好的结果,或者我发现属性与数据帧不兼容


Tags: 数据indexrenameaxisroundx4nettodane
2条回答

不是100%确定我明白你的问题,但是你可以使用astype(int)转换

df = df.set_index('DANE').astype(int).reset_index()
df

             DANE  BAKALIE  NASIONA  OWOCE  WARZYWA
0           ilosc        5       94     61      623
1     marza_netto        7      120     69      668
2  marza_procent2       32       34     29       27

如果要处理具有nan的行,请删除这些行并转换,或者转换为astype(object)。不建议使用后者,因为您会失去性能

如果只有非数字列是DANE,则在转换为列之前强制转换:

x4 = x4.set_index('grupa')
       .T
       .rename_axis('DANE')
       .astype(int)
       .reset_index()
       .rename_axis(None,1)

更通用的解决方案是选择所有浮动列并强制转换:

cols = df.select_dtypes(include=['float']).columns
df[cols] = df[cols].astype(int)
print (df)
             DANE  BAKALIE  NASIONA  OWOCE  WARZYWA
0           ilosc        5       94     61      623
1     marza_netto        7      120     69      668
2  marza_procent2       32       34     29       27

如果某些NaN的值无法转换为int

所以有可能:

1.删除所有NAN行:

df = df.dropna()

2.将nan替换为0这样的整数:

df = df.fillna(0)

相关问题 更多 >