我正在寻找一种有效的方法来将一个Dataframe的多列转换为另一Dataframe的一列。 我设法通过获取原始DF的列名,获取每一列的系列并将这些列一对一地追加到一个空列表中来实现。
column_names = []
column_names.append(df.columns.values.tolist())
for col in df[column_names[0]]:
for element in series:
H_list.append(element)
df_new =pd.DataFrame({"NewColumn": column_names})
这感觉真的很无效,我敢打赌,还有一种更Python化的方法可以做到这一点。
答案 0 :(得分:1)
您可以将DataFrame.stack与DataFrame.Transpose结合使用:
以下是示例:
import pandas as pd
df=pd.DataFrame()
df['col1']=[1,2,3,4,5,6]
df['col2']=[7,8,9,10,11,12]
print(df)
col1 col2
0 1 7
1 2 8
2 3 9
3 4 10
4 5 11
5 6 12
df2=pd.DataFrame()
df2['col1']=[11,12,13,14,15,16,11,12,13,14,15,16]
print(df2)
col1
0 11
1 12
2 13
3 14
4 15
5 16
6 11
7 12
8 13
9 14
10 15
11 16
my_stack_df=df.T.stack().reset_index(drop=True)
df2['col2']=my_stack_df
print(df2)
col1 col2
0 11 1
1 12 2
2 13 3
3 14 4
4 15 5
5 16 6
6 11 7
7 12 8
8 13 9
9 14 10
10 15 11
11 16 12