在大熊猫中,可以使用map
或applymap
来显示一组整数或浮点数,看起来像典型的数字格式。例如......
df['Big_num'] = df['Big_num'].map('{:,.0f}'.format)
...会将包含123456.789的列转换为看起来更好的字符串:123,457。
我正在与一个应用一起工作,在该应用中,用户将执行一些操作并导致重新计算数据框中的单个单元格。结果,给定行上的“数字”将返回为浮点数,然后需要重新格式化。
在这种情况下,您不能使用map
功能,因为大多数列都是字符串。它将引发ValueError。这是我要做的事情的玩具版本:
import pandas as pd
import numpy as np
df_data = {'Location' : ['Denver', 'Boulder', 'San Diego', 'Reno', 'Portland',
'Eugene', 'San Francisco'], 'State' : ['co', 'co', 'ca', 'nv',
'or', 'or', 'ca'], 'Rando_num': [18.56, 5.12, 34.87, 11.22, 72.68, 42.90, 9.38],
'Other_num': [113, 260, 557, 134, 883, 422, 22]}
df = pd.DataFrame(data = df_data)
df['Big_num'] = df['Rando_num'] * df['Other_num']
df['Big_num'] = df['Big_num'].map('{:,.0f}'.format)
print(df)
add_num = input('Type a number to add to row 3 ')
df.loc[3, 'Big_num'] = df.loc[3, 'Rando_num'] * df.loc[3, 'Other_num'] + float(add_num)
#Neither of these work
#df.loc[3, 'Big_num'] = df.loc[3, 'Big_num'].map('{0:.2f}%'.format)
#df.loc['Big_num'] = df['Big_num'].map('{0:.2f}%'.format)
print(df)
我正在寻找输出,其中[3,'Big_num']的卖出应该类似于
1,503
有什么想法吗?预先感谢。
答案 0 :(得分:2)
您的问题是您不能两次运行df['Big_num'] = df['Big_num'].map('{:,.0f}'.format)
。甚至只有一次。
我也建议您使用df.update。
以下是一些工作代码:
import pandas as pd
import numpy as np
df_data = {'Location' : ['Denver', 'Boulder', 'San Diego', 'Reno', 'Portland',
'Eugene', 'San Francisco'], 'State' : ['co', 'co', 'ca', 'nv',
'or', 'or', 'ca'], 'Rando_num': [18.56, 5.12, 34.87, 11.22, 72.68, 42.90, 9.38],
'Other_num': [113, 260, 557, 134, 883, 422, 22]}
df = pd.DataFrame(data = df_data)
df['Big_num'] = df['Rando_num'] * df['Other_num']
#dm = df.copy() #If you want to print twice, uncomment these 3 lines.
#dm['Big_num'] = dm['Big_num'].map('{:,.0f}'.format)
#print(dm)
add_num = input('Type a number to add to row 3 ')
new_num = df.loc[3, 'Rando_num'] * df.loc[3, 'Other_num'] + float(add_num)
new_num = int(new_num)
new_col = pd.Series([new_num], name='Big_num', index=[3])
df.update(new_col)
df['Big_num'] = df['Big_num'].map('{:,.0f}'.format)
print(df)
答案 1 :(得分:1)
您可以仅将字符串格式应用于标量。 pd.DataFrame.at
经过优化,可通过标签访问和设置标量值。
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.1.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.1.0/umd/react-dom.production.min.js"></script>
<div id='container'/>