扩展列值作为键和DataFrame中的值

问题描述 投票:0回答:1

我有一个类似的DataFrame:

df = pd.DataFrame({'A': ['a', 'b', 'c'], 'B':['d', 'e', 'f'], 'C':[1,2,3], 'D':[4,5,6]})

A   B   C   D
a   d   1   4
b   e   2   5
c   f   3   6

我必须将C和D列扩展为A和B作为键。输出应如下所示:

A   B   key val
a   d   C   1
a   d   D   4
b   e   C   2
b   e   D   5
c   f   C   3
c   f   D   6

我将其编码为:

df_new = pd.DataFrame()
list_to_expand = ['C', 'D']
for index, row in df.iterrows():
    for l in list_to_expand:
        df_new = df_new.append(
             pd.DataFrame({'A': row['A'],'B': row['B'], 'key': l, 'val': row[l]},
             index=[0]))

我需要以矢量格式优化代码,但找不到任何功能。请注意,列的列表可以增加,即['C','D','E'...]。我正在使用python3和pandas。

python python-3.x pandas
1个回答
0
投票
您要DataFrame.melt

DataFrame.melt

© www.soinside.com 2019 - 2024. All rights reserved.