我想在df中的所有正值上添加“ +”。
这是我的df
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[-1,3,0,5],
'B':[4,5,6,5],
'C':[8,-9,np.nan,7]})
print (df)
A B C
0 -1 4 8.0
1 3 5 -9.0
2 0 6 NaN
3 5 5 7.0
这就是我想要的样子:
print (df)
A B C
0 -1 +4 +8.0
1 +3 +5 -9.0
2 +0 +6 NaN
3 +5 +5 +7.0
我的尝试
df[df > 0] = "+"
那只是用“ +”代替了正值
答案 0 :(得分:4)
使用显示选项,而不是将浮点数转换为字符串(这不是您想要的):
示例:
import pandas as pd
pd.options.display.float_format = '{:+,.2f}'.format
pd.DataFrame({'a': [1.2, -3.4]})
返回:
a
0 +1.20
1 -3.40
编辑
更好的解决方案imo:您可以使用this更改数据框的一列或多列的格式
示例:
import pandas as pd
df = pd.DataFrame({'a': [1, -3], 'b': ['Hello', 'World'], 'c': [1.234, -1.3]})
df.style.format({'a':'{:+d}', 'c': '{:+g}'})
返回:
a b c
0 +1 Hello +1.234
1 -3 World -1.3
对于您特定的数据框,您可以执行以下操作:
df.style.format('{:+g}')
返回
A B C
0 -1 +4 +8
1 +3 +5 -9
2 +0 +6 +nan
3 +5 +5 +7
如果要删除+nan
,可以执行以下操作:
df.style.format(lambda x: 'NaN' if np.isnan(x) else '{:+g}'.format(x))
返回
A B C
0 -1 +4 +8
1 +3 +5 -9
2 +0 +6 NaN
3 +5 +5 +7
答案 1 :(得分:2)
df = df.applymap(lambda x: "+"+str(x) if x>0 else x)
print(df)
输出:
A B C
0 -1 +4 +8.0
1 +3 +5 -9
2 0 +6 NaN
3 +5 +5 +7.0