从包含列表的列的txt文件中生成数据框架



我有以下文本文件,我在下面给出几行。我想使用具有三列的pandas创建一个数据框架。第一列标题为'Unique_id$给定00001,00002等,第二列标题为'Labels',第三列标题为'doc_id'。

我运行了以下pandas命令

df_text = pd.read_csv('trainset.txt', names = ['Unique_id','Lables', 'doc_id'],delim_whitespace=True)

,输出如下

Unique_id   Labels  doc_id
1   C   9149180 3781329.0
2   B   4396080 9207819.0
3   B   1519858 11734712.0
4   A   15547167    NaN
5   C   11392916    NaN

所以标签被移动了,它把最后一列,其中元素表示一堆文档id作为单独的列。我怎样才能纠正这个问题?使最后一列,其中每个元素是一个列表的文档id?

文本文件如下所示。

txt文件

00001 C 9149180 3781329
00002 B 4396080 9207819 9757979 344087 361152 2099731
00003 B 1519858 11734712
00004 A 15547167
00005 C 11392916
00006 A 8942774 8942775 8036464 7497161
00007 A 15547167
00008 C 12913777

如果我理解正确,您希望最后一个数字作为一个列,其中值是列表:

with open("your_file.txt", "r") as f_in:
df_text = pd.DataFrame(f_in)
df_text["Unique_id"] = df_text[0].str.split().str[0]
df_text["Labels"] = df_text[0].str.split().str[1]
df_text["doc_id"] = df_text[0].apply(lambda x: x.split()[2:])
df_text = df_text.drop(columns=0)
print(df_text)

打印:

Unique_id Labels                                                doc_id
0     00001      C                                    [9149180, 3781329]
1     00002      B  [4396080, 9207819, 9757979, 344087, 361152, 2099731]
2     00003      B                                   [1519858, 11734712]
3     00004      A                                            [15547167]
4     00005      C                                            [11392916]
5     00006      A                  [8942774, 8942775, 8036464, 7497161]
6     00007      A                                            [15547167]
7     00008      C                                            [12913777]

相关内容

  • 没有找到相关文章

最新更新