Campaign ID Revenue Total
601         $2,690
601         $817
601         $0
649         $4,339
10901   $7,273


我上面有一张桌子。想要对数据应用groupby函数并应用总和(超过Revenue_total)。由于Revenue_total是对象数据类型,因此Pandas给出了NA值。任何帮助

import pandas as pd
path = r"C:\Users\roy\Google Drive\Work\Backlog\test.csv"
df = pd.read_csv(path)
df[['Campaign ID','Revenue Total']].head()
df.groupby(['Campaign ID'])[['Revenue Total']].sum()

最佳答案

如果您的数据文件看起来像

Campaign ID  Revenue Total
601         $2,690
601         $817
601         $0
649         $4,339
10901   $7,273


然后,您可以删除$和逗号,然后使用解析为DataFrame

import pandas as pd

df = pd.read_csv('data', sep='\s{2,}',
                 converters={'Revenue Total':lambda x: x.lstrip('$').replace(',','')})




   Campaign ID Revenue Total
0          601          2690
1          601           817
2          601             0
3          649          4339
4        10901          7273




您可能想尝试仅添加

converters={'Revenue Total':lambda x: x.lstrip('$').replace(',','')}


呼叫pd.read_csv。那就是剥离$和逗号的原因。

您可能不需要sep='\s{2,}'-只是为了让我阅读上面显示的格式的数据。您的格式可能有所不同,但是您没有发布它,所以我不知道它是什么...

关于python - Python — Pandas :如何将aggfunc应用于货币格式的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22108562/

10-12 21:00
查看更多