问题描述
date product campaign_type total_monthly_sale
2019-01-01. Dell [call,email,call]. 5
2019-01-01. Apple [fax,fax,visit,visit] 4
2019-02-01. Dell [call,call] 6
2019-02-01. Apple [email,visit] 7
我想创建一个名为“campaign_dict”的新列,它给出了来自 campaign_type 列的值的计数。
示例输出如下:
date product campaign_type total_monthly_sale. campaign_dict
2019-01-01. Dell [call,call]. 5. {'call':2,'email':1}
2019-01-01. Apple. [fax,visit]. 4. {'fax':2,'visit':2}
2019-02-01. Dell. [call,call] 6. {'call':2,'fax':1}
2019-02-01. Apple. [email,visit]. 7 {'email':2,'visit':1}
解决方法
尝试这样的事情
from collections import Counter
df["campaign_dict"] = df["campaign_type"].apply(Counter)
,
您需要的是一个 collections.Counter
import pandas as pd
from collections import Counter
df: pd.DataFrame = pd.DataFrame([
[["call","email","call"],5],[["fax","fax","visit","visit"],4],[["call",6],[["email",7]
],columns=['campaign_type','total_monthly_sale'])
df['campaign_dict'] = df['campaign_type'].apply(Counter)
print(df)
campaign_type total_monthly_sale campaign_dict
0 [call,email,call] 5 {'call': 2,'email': 1}
1 [fax,fax,visit,visit] 4 {'fax': 2,'visit': 2}
2 [call,call] 6 {'call': 2,'fax': 1}
3 [email,visit] 7 {'email': 2,'visit': 1}