我有一个类似的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。
DataFrame.melt
:DataFrame.melt