gpt4 book ai didi

python - pandas 和 python 中的重复数据删除和转置列数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:13 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据框

Column1-Column2
a - 12
b - t1
c - t3
d - 798
a - 87
b - g1
a - 478
c - f1
d - 906

我想要一个像这样的数据框:

Columns: 
a, b, c, d
Rows:
12, t1, t3, 798
87, g1, -, -
478, -, f1, 906

基本上,我想删除重复的列并填充关联的行数据。

非常感谢!

最佳答案

假设您的行始终具有“a”列值,您可以这样做:

#standard imports
import pandas as pd

initial = pd.DataFrame(
{
'Column1' : [
'a',
'b',
'c',
'd',
'a',
'b',
'a',
'c',
'd'
],
'Column2':[
'12',
't1',
't3',
'798',
'87',
'g1',
'478',
'f1',
'906'
]
}
)

pivoted = initial.pivot(columns='Column1', values='Column2')

target = pivoted.groupby(pivoted.apply(lambda x: 1 if x[0]!=None else 0, axis=1).cumsum())[pivoted.columns].agg(lambda x: ''.join([el for el in x if el!=None]))

如果您可以缺少“a”值,那么它会变得更加棘手。这就是为什么在您的问题中提供有代表性的例子如此重要。

编辑:

迭代方法,如果您可以连续使用不存在的“a”值:

#use `initial` dataframe from answer above
target = pd.DataFrame(columns=['a', 'b', 'c', 'd'])
newrow = dict()
for index, row in initial.iterrows():
if row['Column1'] in newrow:
target=target.append(newrow, ignore_index=True)
newrow=dict()
newrow[row['Column1']]=row['Column2']

target=target.append(newrow, ignore_index=True)

关于python - pandas 和 python 中的重复数据删除和转置列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705686/

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