在Pandas中将多列合并为一列[duplicate]

sc4hvdpw  于 2023-02-11  发布在  其他
关注(0)|答案(2)|浏览(179)
    • 此问题在此处已有答案**:

How do I melt a pandas dataframe?(3个答案)
2天前关闭。
我有如下表

Column 1  Column 2   Column 3 ...
0        a         1          2
1        b         1          3
2        c         2          1

我想把它转换成如下形式

Column 1 Column 2
0        a        1
1        a        2
2        b        1
3        b        3
4        c        2
5        c        1
...

我想从第2列(依此类推)中取出每个值,并将其与第1列中的值配对。我不知道如何在Pandas中执行此操作,甚至不知道从哪里开始。

w8ntj3qf

w8ntj3qf1#

您可以使用pd.melt来执行此操作:

>>> df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
...                    'B': {0: 1, 1: 3, 2: 5},
...                    'C': {0: 2, 1: 4, 2: 6}})

>>> df

   A  B  C
0  a  1  2
1  b  3  4
2  c  5  6

>>> pd.melt(df, id_vars=['A'], value_vars=['B', 'C'])

   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
3  a        C      2
4  b        C      4
5  c        C      6
agxfikkp

agxfikkp2#

以下是我的方法,希望能有所帮助:

import pandas as pd
df=pd.DataFrame({'col1':['a','b','c'],'col2':[1,1,2],'col3':[2,3,1]})

new_df=pd.DataFrame(columns=['col1','col2'])
for index,row in df.iterrows():
    for element in row.values[1:]:
        new_df.loc[len(new_df)]=[row[0],element]
print(new_df)
Output:
  col1  col2
0    a     1
1    a     2
2    b     1
3    b     3
4    c     2
5    c     1

相关问题