英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论