gpt4 book ai didi

python - PANDAS 合并行并保留列顺序

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:15 24 4
gpt4 key购买 nike

我有一个“长”格式的 pandas 数据框,其一般结构如下:

id,date,color,size,density
1,201201,val1,val2,val3
1,201301,val1,val2,val3
1,201301,val1,val2,val3
2,201201,val1,val2,val3
2,201202,val1,val2,val3

我想要创建的新“宽”格式是这样的:

id,color_1,size_1,density_1,color_2,size_2,density_2,color_3,size_3,density_3
1,val1,val2,val3,val1,val2,val3,val1,val2,val3
2,val1,val2,val3,val1,val2,val3

列的原始行顺序被保留,但现在按 id 按日期升序排列在单行中。当我尝试 pd.pivot 变体时,它不会保留列顺序。也许是一种连续方法?欢迎任何建议。

更新:

我在这方面取得了一些进展,所以这是我的新基础数据框:

id, date, feature_vector (parens for clarity, not in data, comma seperated string field)
1,2012-01-01,(0,1,0,0,0,1)
1,2013-01-01,(0,0,1,0,0,1)
1,2013-01-02,(0,1,0,1,0,1)
2,2012-01-11,(0,1,0,0,1,1)
2,2012-02-11,(0,1,1,0,0,1)

我正在尝试创建以下内容:

id, feature_vector
1,(0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1)
2,(0,1,0,0,1,1,0,1,1,0,0,1)

我现在只是尝试按日期顺序连接特征向量。

最佳答案

您可以使用 concat 方法,但我尝试制作您的长数据帧,发现即使在您的玩具示例中它也很笨拙且脆弱。我建议使用 groupby 方法。

grouped = df.sort('date', ascending=True).groupby('id')

如果您需要串联版本,请尝试以下操作:

columns = ['date', 'color', 'size', 'density']

first = grouped.nth(0)
first = first[columns]
first.rename(columns=lambda x: '{}_1'.format(x), inplace=True)

second = grouped.nth(1)
second = second[columns]
second.rename(columns=lambda x: '{}_2'.format(x), inplace=True)

new_df = pd.concat([first, second], axis=1)

关于python - PANDAS 合并行并保留列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39550212/

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