【发布时间】:2019-12-09 21:09:07
【问题描述】:
我有以下数据框
df = pd.DataFrame({'ID':[1,2,3],'Q8_4_1':[1,2,3], 'Q8_5_1':[2,5,7],'Q8_4_2':[6,7,8], 'Q8_5_2':[9,10,11]})
这些列仅代表不同文件的相同变量。因此,结构如下 Q8_4_(file1)、Q8_4_(file2) 等。我想将数据框转换为具有以下表示:
目前我正在运行一个不太理想的解决方案,其中涉及对列索引进行硬编码并按 file_id 拆分数据帧,如下所示:
df1 = df.iloc[:,:3]
df1.columns = ["ID","Q8_4","Q_5"]
df1["File_ID"] = 1
df2 = df.iloc[:,3:]
df2["ID"] = df["ID"]
df2.columns = ["ID","Q8_4","Q_5"]
df2["File_ID"] = 2
pd.concat([df1,df2],axis=0)
是否有任何 Pandas 功能可以帮助我在可扩展的级别上实现这一目标?
【问题讨论】:
-
使用枢轴选项
-
小心。如果您使用 df.columns 重命名,则序列可能会更改。尝试使用 df.rename(columns=Dict)。在这种情况下,您实际上将 Q8_5_2 与 Q8_4_1 连接起来。我认为这不是您所期望的。