分组列数据列

发布于 2025-02-08 13:11:40 字数 1193 浏览 1 评论 0原文

我汇总了一个列和获取数组列的总和。

df2 = pd.DataFrame([[1,'IT',  np.array([2, 5, 3])],
                   [1, 'IT', np.array([2, 5, 3])],
                   [1,'Sport', np.array([2, 5, 3, 5, 3])],
                   [2,'Sport',  np.array([2, 5, 3])],
                   [2, 'IT', np.array([2, 5, 3])],
                   [2, 'Sport',np.array([2, 5, 3, 5, 3])]
                   ],
                 columns=['doc_id','type', 'topic_dist'])
grouped = df2.groupby(['doc_id','type'])
aggregate = list((k, v["topic_dist"].apply(pd.Series).sum().to_list()) for k, v in grouped) 
df_results = pd.DataFrame(aggregate, columns=['grouped_columns','topic_dist'])

并得到这个结果。

  grouped_columns                  topic_dist
0         (1, IT)                  [4, 10, 6]
1      (1, Sport)             [2, 5, 3, 5, 3]
2         (2, IT)                   [2, 5, 3]
3      (2, Sport)  [4.0, 10.0, 6.0, 5.0, 3.0]

预期结果

  doc_id  type       topic_dist
0    1     IT        [4, 10, 6]
1    1     Sport     [2, 5, 3, 5, 3]
2    2     IT        [2, 5, 3]
3    2     Sport     [4.0, 10.0, 6.0, 5.0, 3.0]

是否有任何分组列的想法?

I aggregate a columns and a get the sum of array column.

df2 = pd.DataFrame([[1,'IT',  np.array([2, 5, 3])],
                   [1, 'IT', np.array([2, 5, 3])],
                   [1,'Sport', np.array([2, 5, 3, 5, 3])],
                   [2,'Sport',  np.array([2, 5, 3])],
                   [2, 'IT', np.array([2, 5, 3])],
                   [2, 'Sport',np.array([2, 5, 3, 5, 3])]
                   ],
                 columns=['doc_id','type', 'topic_dist'])
grouped = df2.groupby(['doc_id','type'])
aggregate = list((k, v["topic_dist"].apply(pd.Series).sum().to_list()) for k, v in grouped) 
df_results = pd.DataFrame(aggregate, columns=['grouped_columns','topic_dist'])

and a get this result.

  grouped_columns                  topic_dist
0         (1, IT)                  [4, 10, 6]
1      (1, Sport)             [2, 5, 3, 5, 3]
2         (2, IT)                   [2, 5, 3]
3      (2, Sport)  [4.0, 10.0, 6.0, 5.0, 3.0]

expected result

  doc_id  type       topic_dist
0    1     IT        [4, 10, 6]
1    1     Sport     [2, 5, 3, 5, 3]
2    2     IT        [2, 5, 3]
3    2     Sport     [4.0, 10.0, 6.0, 5.0, 3.0]

any ideas to split the grouped Columns?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

追我者格杀勿论 2025-02-15 13:11:40

设置索引来实现此目的:

df.index = pd.MultiIndex.from_tuples(df.grouped_columns, names=['doc_id', 'type'])
df = df.drop('grouped_columns', axis=1)

pd.multiindex.from_tuples

df[['doc_id', 'type']] = df.grouped_columns.tolist()
df = df.drop('grouped_columns', axis=1)

您可以通过使用/code>作为速记在这里df_results提高可读性。

You can achieve this by setting the index using pd.MultiIndex.from_tuples as follows:

df.index = pd.MultiIndex.from_tuples(df.grouped_columns, names=['doc_id', 'type'])
df = df.drop('grouped_columns', axis=1)

Or, if you would like them to be regular columns instead of a multiindex:

df[['doc_id', 'type']] = df.grouped_columns.tolist()
df = df.drop('grouped_columns', axis=1)

Note that I am using df as shorthand here for df_results to improve readability.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文