是否有 Python 库可以根据 Col A 对 Col B 的值进行分组,并在一行中显示一组的所有值?
Is there a Python library to group values of Col B based on Col A and display all values of a group in a single row?
我希望将以下数据转换为如下预期输出。
第二列的值必须根据第一列的值分组并显示在一行中。
我可以在 Python 中使用我自己的逻辑来执行此操作,但想知道 Pandas 或 Python 中的任何其他库是否提供此类功能以使其更容易。
输入:
1 A
1 B
1 B
2 D
3 A
1 C
4 D
2 A
1 A
3 B
4 A
2 D
2 C
4 C
4 B
4 A
3 A
预期结果:
1 A B B C A
2 D A D C
3 A B A
4 D A C B A
是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
假设 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
您可以使用:
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
我希望将以下数据转换为如下预期输出。 第二列的值必须根据第一列的值分组并显示在一行中。 我可以在 Python 中使用我自己的逻辑来执行此操作,但想知道 Pandas 或 Python 中的任何其他库是否提供此类功能以使其更容易。
输入:
1 A
1 B
1 B
2 D
3 A
1 C
4 D
2 A
1 A
3 B
4 A
2 D
2 C
4 C
4 B
4 A
3 A
预期结果:
1 A B B C A
2 D A D C
3 A B A
4 D A C B A
是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
假设 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
您可以使用:
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