Pandas将一个数据帧的列转换为另一个数据帧中的索引

时间:2018-04-14 23:18:05

标签: python pandas csv dataframe

我有一些.txt格式的文本文件。

我正在尝试使用它们创建.csv文件,以便.txt文件位于索引列中。

我稍后会在编辑数据帧时添加包含人口统计和统计信息(例如,L1,提示和级别)的列,但我想在索引中对齐txt文件,以便我可以进行一些NLTK分析。 / p>

所需的输出是:

            L1         Prompt    Level    
FileName
data1.txt   Japanese   P1        High
data2.txt   Korean     P1        High
data3.txt   Chinese    P1        High
data4.txt   Japanese   P2        Med
data5.txt   Korean     P2        Med
data6.txt   Chinese    P2        Med 
data7.txt   Arabic     P1        High
data8.txt   German     P1        High
data9.txt   Spanish    P1        High
data10.txt  Arabic     P2        Med
data11.txt  German     P2        Med
data12.txt  Spanish    P2        Med 

我尝试的代码如下

df1=pd.read_csv('data1.txt',names=['data1'])
df2=pd.read_csv('data2.txt',names=['data2'])
df3=pd.read_csv('data3',names=['data3'])
result=pd.concat([df1,df2,df3],axis=1)
result.to_csv('mergedfile.txt',index=False)

但这当然会创建列

   data1.txt   data2.txt   data3.txt
0  XYZ         GHI         PQR
1  ABC         JKL         STU
2  DEF         MNO         VWX

XYZ和ABC都是句子,例如“我的祖国和美国之间的差异之一就是便利店”。或者“一个不同的是公共交通,每个人都在我的国家乘坐公共交通工具,而不是在美国。”

每个txt文件有超过100,000个话语,所以我不想把所有数据都放在数据帧中,如果我能把txt文件放到索引列中,那将是最理想的。

最终,我想将其导出到.csv,然后将其用于进一步分析。

1 个答案:

答案 0 :(得分:2)

您可以使用数据框中的列作为新数据框的索引:

df1 = pd.DataFrame({'data1': ['XYZ', 'ABC', 'DEF']})
df2 = pd.DataFrame({'data2': ['GHI', 'JKL', 'MNO']})
df3 = pd.DataFrame({'data3': ['PQR', 'STU', 'VWX']})

df = pd.concat([df1, df2, df3], axis=1)

print(df)

#   data1 data2 data3
# 0   XYZ   GHI   PQR
# 1   ABC   JKL   STU
# 2   DEF   MNO   VWX

res = pd.DataFrame(index=[k+'.txt' for k in df],
                   columns=['L1', 'Prompt', 'Level'])

print(res)

#             L1 Prompt Level
# data1.txt  NaN    NaN   NaN
# data2.txt  NaN    NaN   NaN
# data3.txt  NaN    NaN   NaN