我有一个看起来像这样的数据框:
df = pd.DataFrame({'publisher': ['facebook', 'facebook', 'facebook', 'google', 'google', 'google'],
'month_leadgen': ['2019-01', '2019-02', '2019-03', '2019-01', '2019-02', '2019-03'],
'month_payment': ['2019-01', '2019-02', '2019-03', '2019-01', '2019-02', '2019-03'],
'revenue': [60, 150, 450, 85, 250, 150]})
然后我创建了一个数据透视表:
df = df.pivot_table(index=['publisher', 'month_leadgen'], columns='month_payment', values='revenue').reset_index()
我正在尝试选择列df['2020-01']
,但收到一条错误消息:
KeyError: '2020-01'
您能帮我理解为什么我不能选择此列吗? df似乎没有多索引。我不能选择任何月份列,但是可以选择“ month_payment”,“ campaign_name”和“ month_leadgen”。
答案 0 :(得分:2)
使用slice(None)
选择级别的所有内容。 slice(None)免于说明更深层次的内容。暗示着他们
df=df.pivot_table(index=['publisher', 'month_leadgen'], columns=['month_payment'], values=['revenue']).reset_index()
print(df)
publisher month_leadgen revenue
month_payment 2019-01 2019-02 2019-03
0 facebook 2019-01 60.0 NaN NaN
1 facebook 2019-02 NaN 150.0 NaN
2 facebook 2019-03 NaN NaN 450.0
3 google 2019-01 85.0 NaN NaN
4 google 2019-02 NaN 250.0 NaN
5 google 2019-03 NaN NaN 150.0
选择
df.loc[:, (slice(None), '2019-01')]
revenue
month_payment 2019-01
0 60.0
1 NaN
2 NaN
3 85.0
4 NaN
5 NaN