gpt4 book ai didi

python - 没有唯一列的透视数据框

转载 作者:行者123 更新时间:2023-12-01 07:27:41 26 4
gpt4 key购买 nike

我的数据框看起来像这样,

df = 
index | A | B | C
0 |00456|text1|date1
1 |00443|text1|date2
2 |00456|text1|date3
3 |00231|text2|date4
4 |00231|text3|date1
5 |00456|text2|date1

我想得到以下结果,

df =
index | Α | B_1 |B_2 |B_3 |C_1...
0 |00456|text1|text1|text2|...
1 |00443|text1|NaN |NaN |...
2 |00231|text2|text3|NaN |...

具有 _1 后缀或 NaN 值并不重要,我想要实现的是根据列的内容将所有值放在同一行中A

实现这一目标的最佳方法是什么?

请注意,我使用了一种我认为过于复杂的方法来完成此操作,涉及的操作如下:

groups = df.groupby(["A"])
df = pd.concat((groups.A.apply(lambda x: pd.Series(data=x.values)).unstack(),
groups.B.apply(lambda x: pd.Series(data=x.values)).unstack(),
groups.C.apply(lambda x: pd.Series(data=x.values)).unstack()),
keys = ['A', 'B' 'C'], axis=1)

最佳答案

使用 GroupBy.cumcount 作为计数器,通过 DataFrame.set_indexDataFrame.unstack 进行 reshape ,最后压平列中的 MultiIndex 并将索引转换为列:

g = df.groupby('A').cumcount() + 1
df1 = df.set_index(['A', g]).unstack()
df1.columns = [f'{a}_{b}' for a, b in df1.columns]
df1 = df1.reset_index()
print (df1)
A B_1 B_2 B_3 C_1 C_2 C_3
0 231 text2 text3 NaN date4 date1 NaN
1 443 text1 NaN NaN date2 NaN NaN
2 456 text1 text1 text2 date1 date3 date1

关于python - 没有唯一列的透视数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57375369/

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