为了账号安全,请及时绑定邮箱和手机立即绑定

是否有 Python 库可以根据 Col A 对 Col B 的值进行分组并在一行中显示组的所有值?

是否有 Python 库可以根据 Col A 对 Col B 的值进行分组并在一行中显示组的所有值?

慕无忌1623718 2022-01-18 16:07:30
我希望将以下数据转换为以下预期输出。第 2 列的值必须根据第 1 列中的值分组并显示在一行中。我可以在 Python 中使用我自己的逻辑来执行此操作,但想知道 Pandas 或 Python 中的任何其他库是否提供此类功能以使其更容易。输入:1   A1   B1   B2   D3   A1   C4   D2   A1   A3   B4   A2   D2   C4   C4   B4   A3   A预期结果:1   A   B   B   C   A2   D   A   D   C   3   A   B   A       4   D   A   C   B   A
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

使用假设0是第一列并且1是第二列。如果第一列是索引替换0为df.index


m=df.groupby(0)[1].apply(list)

print(pd.DataFrame(m.values.tolist(),index=m.index).rename_axis(None).fillna(''))

   0  1  2  3  4

1  A  B  B  C  A

2  D  A  D  C   

3  A  B  A      

4  D  A  C  B  A


查看完整回答
反对 回复 2022-01-18
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

是pandas的可以做到:


import pandas as pd


# Create dataframe (or import it)

df = pd.DataFrame({"id": [1, 1, 1, 2, 2, 3, 1, 4], "letter" : ["A", "A", "B", "D", "A", "C", "B", "B"]})


print(df)

结果:


    id  letter

0   1   A

1   1   A

2   1   B

3   2   D

4   2   A

5   3   C

6   1   B

7   4   B

然后:


df.groupby("id").sum()

print(df)

结果:


id  letter

1   AABB

2   DA

3   C

4   B


查看完整回答
反对 回复 2022-01-18
?
森林海

TA贡献2011条经验 获得超2个赞

您可以使用:


df.groupby('id').sum()['letter'].apply(lambda x: ' '.join(x))


id

1    A B B C A

2      D A D C

3        A B A

4    D A C B A


查看完整回答
反对 回复 2022-01-18
  • 3 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信