【发布时间】:2021-10-19 08:55:58
【问题描述】:
【问题讨论】:
-
你能从样本数据中添加预期的输出吗?
标签: python pandas pandas-groupby data-analysis
【问题讨论】:
标签: python pandas pandas-groupby data-analysis
首先将DataFrame.explode 用于标量列表,然后通过DataFrame.drop_duplicates 删除重复项,最后通过Series.value_counts 使用Series.head 获取top3,因为value_counts 默认排序:
top3 = df.explode('Games').drop_duplicates(['Games','Room'])['Games'].value_counts().head(3)
【讨论】:
分解您的 Games 列(如果 Games 包含真正的 Python 列表)然后删除重复项(根据您的旁注)并根据您的需要使用具有不同参数的 value_counts:
>>> df.explode('Games') \
.drop_duplicates(['Games', 'Rooms']) \
.value_counts('Games').head(3)
Games
A 2
B 2
C 2
dtype: int64
>>> df.explode('Games') \
.drop_duplicates(['Games', 'Rooms']) \
.value_counts(['Games', 'Rooms']).head(3)
Games Rooms
A North 1
West 1
B East 1
dtype: int64
设置:
data = {'Games': [['A', 'B', 'C'], ['B', 'D'], ['B', 'E'], ['A', 'C'], ['D']],
'Rooms': ['West', 'East', 'East', 'North', 'South']}
df = pd.DataFrame(data)
print(df)
# Output:
Games Rooms
0 [A, B, C] West
1 [B, D] East
2 [B, E] East
3 [A, C] North
4 [D] South
【讨论】: