我使用以下方法在pandas中创建了交叉列表:
grouped_missing_analysis = pd.crosstab(clean_sessions.action_type, clean_sessions.action, margins=True).unstack()
print(grouped_missing_analysis[:20])
导致显示:
action action_type
10 Missing 0
Unknown 0
booking_request 0
booking_response 0
click 0
data 0
message_post 3215
modify 0
partner_callback 0
submit 0
view 0
All 3215
11 Missing 0
Unknown 0
booking_request 0
booking_response 0
click 0
data 0
message_post 716
modify 0
dtype: int64
我只想显示action_type
,其中包含“未知”,“丢失”或“其他”,并忽略其他action_type
的每个操作。我有一种感觉答案是:
.where(clean_sessions.action_type.isin(('Missing', 'Unknown')), 'Other')
从我以前的片段开始,但我无法让它发挥作用。也许pivot_table
更容易,这个练习只是让我学习如何在python中使用不同的函数进行数据分析。
clean_sessions
的原始数据如下:
user_id action action_type action_detail \
0 d1mm9tcy42 lookup Missing Missing
1 d1mm9tcy42 search_results click view_search_results
2 d1mm9tcy42 lookup Missing Missing
3 d1mm9tcy42 search_results click view_search_results
4 d1mm9tcy42 lookup Missing Missing
5 d1mm9tcy42 search_results click view_search_results
6 d1mm9tcy42 lookup Missing Missing
7 d1mm9tcy42 personalize data wishlist_content_update
8 d1mm9tcy42 index view view_search_results
9 d1mm9tcy42 lookup Missing Missing
device_type secs_elapsed
0 Windows Desktop 319
1 Windows Desktop 67753
2 Windows Desktop 301
3 Windows Desktop 22141
4 Windows Desktop 435
5 Windows Desktop 7703
6 Windows Desktop 115
7 Windows Desktop 831
8 Windows Desktop 20842
9 Windows Desktop 683
答案 0 :(得分:4)
这些是你的索引而不是列,你需要传递标签来选择感兴趣的行。
您可以传递slice(None)
作为第一级,然后传递第二级列表:
In [102]:
grouped_missing_analysis.loc[slice(None), ['Missing', 'Unknown', 'Other']]
Out[102]:
action action_type
index Missing 0
lookup Missing 5
personalize Missing 0
search_results Missing 0
All Missing 5
dtype: int64
docs提供了有关此索引方式的更多详细信息