python - 将具有多个列表的文本文件读取到 pandas dataframe 中,列表中的元素之间存在空格和逗号

标签 python python-3.x pandas dataframe read-write

我有一个名为 tropical.txt 的文本文件,其中包含多个列表,每个列表均由换行符分隔。请注意,逗号周围有空格。

 space here and space here
         | |
['papaya' , 'mangosteen' , 'banana']
[]
['coconut' , 'mango']
['mangosteen' , 'papaya']

我尝试了以下代码

import pandas as pd

df = pd.read_csv('tropical.txt', sep='\n', header=None, engine = 'python')
df

这给了我

ValueError: Specified \n as separator or delimiter. This forces the python engine which does not accept a line terminator. Hence it is not allowed to use the line terminator as separator.

如果我这么做

import pandas as pd

df = pd.read_csv('tropical.txt', header= None, engine = 'python')
df

输出不是我想要的

         0           1             2
0   ['papaya'   'mangosteen'    'banana']
1   []               None        None
2   ['coconut'      'mango']     None
3   ['mangosteen'   'papaya']    None


我期待着


                        0   
0   [papaya,mangosteen,banana]
1   []  
2   [coconut,mango] 
3   [mangosteen,papaya]


有什么建议吗?

最佳答案

您可以使用read_csv,通过指定行中不会出现的分隔符(例如\0)(以便将每一行作为一个整体读取)和 ast.literal_eval作为值的转换器:

import ast

pd.read_csv('tropical.txt', header=None, sep='\0', names=['fruits'], converters={ 'fruits' : ast.literal_eval })

输出:

                         fruits
0  [papaya, mangosteen, banana]
1                            []
2              [coconut, mango]
3          [mangosteen, papaya]

关于python - 将具有多个列表的文本文件读取到 pandas dataframe 中,列表中的元素之间存在空格和逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72795515/

相关文章:

python - 相当于 R/dplyr group_by 的 Pandas 总结串联

python - 合并 Pandas DataFrame 中多行的数据

python - 多页抓取期间出现 NoneType 错误

python - 如何让 StarCluster AMI 与 IPython 0.13 配合使用?

python - Django 数据库和类设计

python - 如何删除 Countvectorizer 中存在的数字字符?

Python3 - 增加文本文件内的数字

python - Pytest mocker.patch 返回 NonCallableMagicMock

python-3.x - 有没有办法替换字符串中两个字符对之外的所有空格?

grep - Pandas :grep之类的功能