我有一个管道分隔的事务文件。我想从这些数据中找出以下内容。
Pedro|groceries|apple|1.42
Nitin|tobacco|cigarettes|15.00
Susie|groceries|cereal|5.50
Susie|groceries|milk|4.75
Susie|tobacco|cigarettes|15.00
Susie|fuel|gasoline|44.90
Pedro|fuel|propane|9.60
答案 0 :(得分:1)
这可以通过pandas.DataFrame.groupby
:
import pandas as pd
from io import StringIO
mystr = """Pedro|groceries|apple|1.42
Nitin|tobacco|cigarettes|15.00
Susie|groceries|cereal|5.50
Susie|groceries|milk|4.75
Susie|tobacco|cigarettes|15.00
Susie|fuel|gasoline|44.90
Pedro|fuel|propane|9.60"""
df = pd.read_csv(StringIO(mystr), header=None, sep='|',
names=['Name', 'Category', 'Product', 'Sales'])
# Report 1
rep1 = df.groupby('Name')['Sales'].sum()
# Name
# Nitin 15.00
# Pedro 11.02
# Susie 70.15
# Name: Sales, dtype: float64
# Report 2
rep2 = df.groupby(['Name', 'Category'])['Sales'].sum()
# Name Category
# Nitin tobacco 15.00
# Pedro fuel 9.60
# groceries 1.42
# Susie fuel 44.90
# groceries 10.25
# tobacco 15.00
# Name: Sales, dtype: float64