gpt4 book ai didi

python-3.x - 在 Pandas 中将多列合并为一列

转载 作者:行者123 更新时间:2023-12-04 02:55:49 27 4
gpt4 key购买 nike

我有一个名为ref(first dataframe)的数据框,其中包含列c1,c2,c3和c4。

ref= pd.DataFrame([[1,3,.3,7],[0,4,.5,4.5],[2,5,.6,3]], columns=['c1','c2','c3','c4'])
print(ref)
c1 c2 c3 c4
0 1 3 0.3 7.0
1 0 4 0.5 4.5
2 2 5 0.6 3.0

我想创建一个新列,即c5(第二个数据帧),其中包含列c1,c2,c3和c4中的所有值。

我试过concat,合并列,但我无法正常工作。

请让我知道您是否有解决方案?

pic

最佳答案

您可以使用 unstack Series创建DataFrame,然后再将 concat 创建为原始格式:

print (pd.concat([ref, ref.unstack().reset_index(drop=True).rename('c5')], axis=1))
c1 c2 c3 c4 c5
0 1.0 3.0 0.3 7.0 1.0
1 0.0 4.0 0.5 4.5 0.0
2 2.0 5.0 0.6 3.0 2.0
3 NaN NaN NaN NaN 3.0
4 NaN NaN NaN NaN 4.0
5 NaN NaN NaN NaN 5.0
6 NaN NaN NaN NaN 0.3
7 NaN NaN NaN NaN 0.5
8 NaN NaN NaN NaN 0.6
9 NaN NaN NaN NaN 7.0
10 NaN NaN NaN NaN 4.5
11 NaN NaN NaN NaN 3.0

创建 Series的替代解决方案是通过 df numpy array转换为 values,然后通过 ravel 进行整形:
    print (pd.concat([ref, pd.Series(ref.values.ravel('F'), name='c5')], axis=1))
c1 c2 c3 c4 c5
0 1.0 3.0 0.3 7.0 1.0
1 0.0 4.0 0.5 4.5 0.0
2 2.0 5.0 0.6 3.0 2.0
3 NaN NaN NaN NaN 3.0
4 NaN NaN NaN NaN 4.0
5 NaN NaN NaN NaN 5.0
6 NaN NaN NaN NaN 0.3
7 NaN NaN NaN NaN 0.5
8 NaN NaN NaN NaN 0.6
9 NaN NaN NaN NaN 7.0
10 NaN NaN NaN NaN 4.5
11 NaN NaN NaN NaN 3.0

关于python-3.x - 在 Pandas 中将多列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627678/

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