gpt4 book ai didi

python - Pandas 数据框行操作

转载 作者:行者123 更新时间:2023-11-28 18:16:56 25 4
gpt4 key购买 nike

我确定我遗漏了一些简单的东西,但我无法弄清楚这一点。我在 Pandas 中有一个 DataFrame,其中有多行具有相同的键,但信息不同。我想将这些行放在同一行。

df = pd.DataFrame({'key': ['K0', 'K0', 'K1', 'K2'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})

这将给我一个包含 4 行和 3 列的数据框。但是'key'中有一个重复值'KO'

有什么方法可以将其转换为 3 行 5 列的数据框,如下所示?

df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
'A': ['A0', 'A2', 'A3'],
'B': ['B0', 'B2', 'B3'],
'A_1': ['A1', 'NaN', 'NaN'],
'B_1': ['B1', 'NaN', 'NaN']})

最佳答案

cumcount 执行groupby,然后将各个组连接在一起。

gps = []
for i, g in df.groupby(df.groupby('key').cumcount()):
gps.append(g.drop('key', 1).add_suffix(i + 1).reset_index(drop=1))

r = pd.concat(gps, 1).sort_index(axis=1)
r['key'] = df.key.unique()

r
A1 A2 B1 B2 key
0 A0 A1 B0 B1 K0
1 A2 NaN B2 NaN K1
2 A3 NaN B3 NaN K2

您可以使用列表推导来稍微缩短它 -

r = pd.concat(
[g.drop('key', 1).add_suffix(i + 1).reset_index(drop=1)
for i, g in df.groupby(df.groupby('key').cumcount())],
axis=1)\
.sort_index(axis=1)

r['key'] = df.key.unique()
r
A1 A2 B1 B2 key
0 A0 A1 B0 B1 K0
1 A2 NaN B2 NaN K1
2 A3 NaN B3 NaN K2

关于python - Pandas 数据框行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com