将多个列合并为一个列在 pandas 中

huangapple go评论60阅读模式
英文:

combine multiple column into one in pandas

问题

我有以下类似的表格

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

我想将它转换成以下形式

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

我想要将列2(以及其他列)中的每个值与列1中的值配对。我不知道如何在pandas中做这个操作,甚至不知道从哪里开始。

英文:

I have table like below

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

and I want to convert it to be like below

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

I want to take each value from Column 2 (and so on) and pair it to value in column 1. I have no idea how to do it in pandas or even where to start.

答案1

得分: 3

你可以使用 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
英文:

You can use pd.melt to do this:

>>> 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

答案2

得分: 0

以下是您要翻译的代码部分:

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)

输出:

  col1  col2
0    a     1
1    a     2
2    b     1
3    b     3
4    c     2
5    c     1
英文:

Here's my approach, hope it helps:

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

huangapple
  • 本文由 发表于 2023年2月8日 16:20:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/75382960.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定