熊猫花车转换为字符串无小数
问题描述:
我有一个数据帧熊猫花车转换为字符串无小数
df = pd.DataFrame([
['2', '3', 'nan'],
['0', '1', '4'],
['5', 'nan', '7']
])
print df
0 1 2
0 2 3 nan
1 0 1 4
2 5 nan 7
我想这些字符串转换为数字,总结列和转换回字符串。使用astype(float)
似乎让我的号码部分。然后用sum()
进行求和。然后回到字符串应该也很容易astype(str)
df.astype(float).sum().astype(str)
0 7.0
1 4.0
2 11.0
dtype: object
这几乎是我想要的。我想要整数的字符串版本。但花车有小数。我如何摆脱它们?
我想这
0 7
1 4
2 11
dtype: object
答
在混合添加astype(int)
:例如与空单元格
df.astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
dtype: object
示范。这不是从OP的要求,但满足诽谤者
df = pd.DataFrame([
['2', '3', 'nan', None],
[None, None, None, None],
['0', '1', '4', None],
['5', 'nan', '7', None]
])
df
0 1 2 3
0 2 3 nan None
1 None None None None
2 0 1 4 None
3 5 nan 7 None
然后
df.astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
3 0
dtype: object
因为OP没有指定他们希望当一列被全部失踪发生什么,呈现零是一个合理的选择。
然而,我们也可以丢弃这些列
df.dropna(1, 'all').astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
dtype: object
答
转换前添加astype(int)
字符串:
print (df.astype(float).sum().astype(int).astype(str))
产生期望的结果。
答
如果您的列包含空值,则转换为int
(即.astype(int).astype(str)
)将不起作用;它往往是一个更好的主意,使用字符串格式化来显式指定字符串列的格式:
In [52]: df.astype(float).sum().applymap(lambda x: "{:.0f}".format(x))
Out[52]:
0 7
1 4
2 11
dtype: object
我相信你只是现在一些战略性downvoting的受害者。 +1来反击,因为你的回答在另一个之前。 – bernie
感谢您关注@bernie – piRSquared
这不会处理所有缺少值的行。 – dlm