我的问题与这里问的但没有回答的问题非常相似Replicating GROUP_CONCAT for pandas.DataFrame
我有一个熊猫DataFame,我想将它组合成一个数据帧
+------+---------+
| team | user |
+------+---------+
| A | elmer |
| A | daffy |
| A | bugs |
| B | dawg |
| A | foghorn |
+------+---------+ 成为
+------+---------------------------------------+
| team | group_concat(user) |
+------+---------------------------------------+
| A | elmer,daffy,bugs,foghorn |
| B | dawg |
+------+---------------------------------------+ 在原始主题中,可以通过以下任意一种方式来实现:
df.groupby('team').apply(lambda x: ','.join(x.user))
df.groupby('team').apply(lambda x: list(x.user))
df.groupby('team').agg({'user' : lambda x: ', '.join(x)})但是结果对象不再是Pandas Dataframe。如何将原始Pandas DataFrame中的GROUP_CONCAT结果作为新列获取?
干杯
发布于 2021-01-09 19:08:13
让我们分解一下下面的代码:
首先,groupby team和,use apply on user to join其元素使用,
axis=1,引用列而不是行)H214F215res = (df.groupby('team')['user']
.apply(lambda x: ','.join(str(i) for i in x))).reset_index().rename({'user':'group_concat(user)'},axis=1)输出:
team group_concat(user)
0 A elmer,daffy,bugs,foghorn
1 B dawg发布于 2021-01-09 19:12:46
您可以在grouping之后应用list和join,然后使用reset_index获取数据帧。
output_df = df.groupby('team')['user'].apply(lambda x: ",".join(list(x))).reset_index()
output_df.rename(columns={'user': 'group_concat(user)'})
team group_concat(user)
0 A elmer,daffy,bugs,foghorn
1 B dawghttps://stackoverflow.com/questions/65641808
复制相似问题