我查看过很多帖子,但我的代码中没有一个可以实现的解决方案:
x4 = x4.set_index('grupa').T.rename_axis('DANE').reset_index().rename_axis(None,1).round()
之后我得到了结果DataFrame:
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)
,但我没有取得好成绩,或者我发现属性与DataFrame不兼容。
答案 0 :(得分:2)
如果只有非数字列为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
s值无法转换为int
。
所以可能:
1.丢弃所有NaNs行:
df = df.dropna()
2.将NaNs替换为某个整数,如0
:
df = df.fillna(0)
答案 1 :(得分: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)
。不建议使用后者,因为你会失去性能。