我正在尝试使用逗号千位分隔符,以便于在我的熊猫 df 的几列中查看。
我的问题建立在这个问题+答案的基础上。但是我想将其应用于几列,但我失败了。
一个最小的例子:
# A random df
df = pd.DataFrame({'a' : np.random.normal(200000, 10000, 6),
'c' : np.random.normal(200000, 100000, 6)})
# This works:
df['a'] = df.a.apply(lambda x : "{:,}".format(x))
# But this doesn't
df = df.apply(lambda x : "{:,}".format(x) if x.name in ['a', 'c'] else x)
如果有人能给我指路,将不胜感激。请注意,我想将此函数应用于几十列,因此手动重复每列的代码不是解决方案。
将DataFrame.applymap
与要处理的列名列表一起使用:
np.random.seed(2020)
df = pd.DataFrame({'a' : np.random.normal(200000, 10000, 6),
'c' : np.random.normal(200000, 100000, 6)})
cols = ['a', 'c']
df[cols] = df[cols].applymap("{:,}".format)
print (df)
a c
0 182,311.5429442405 193,884.55680466516
1 200,755.5227120811 206,451.38441186142
2 188,693.70297194656 241,011.29497994468
3 193,485.69833095264 142,711.7509918912
4 191,068.843736801 119,866.63751387625
5 187,258.9902320009 331,203.5192212922