要按组统计Pandas DataFrame中列表的重复项的数量,可以使用groupby()函数和value_counts()函数。
首先,我们先创建一个示例的DataFrame:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'C'],
'List': [['apple', 'banana', 'orange'], ['apple', 'banana'], ['apple', 'grape'], ['banana', 'orange'], ['apple', 'grape'], ['banana', 'orange', 'grape']]}
df = pd.DataFrame(data)
这将创建一个具有两列的DataFrame,其中一列是组名(Group),另一列是列表(List)。
然后,我们可以使用groupby()函数根据组名(Group)对DataFrame进行分组,并使用apply()函数将value_counts()函数应用于列表(List)列:
df_count = df.groupby('Group')['List'].apply(lambda x: pd.Series(x).value_counts()).unstack(fill_value=0)
这将创建一个新的DataFrame(df_count),其中包含每个组中列表中每个元素的计数。
最后,我们可以打印出结果:
print(df_count)
完整的代码示例如下:
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'C'],
'List': [['apple', 'banana', 'orange'], ['apple', 'banana'], ['apple', 'grape'], ['banana', 'orange'], ['apple', 'grape'], ['banana', 'orange', 'grape']]}
df = pd.DataFrame(data)
df_count = df.groupby('Group')['List'].apply(lambda x: pd.Series(x).value_counts()).unstack(fill_value=0)
print(df_count)
这将输出:
apple banana grape orange
Group
A 2 2 0 1
B 2 1 2 1
C 0 1 1 1
这个结果显示了每个组中列表中每个元素的计数。
上一篇:按组统计返回的记录数。
下一篇:按组统计数据框中的频率