使用pandas将txt文件转换为数据帧

时间:2017-11-05 01:49:23

标签: python pandas dataframe data-science

我正在尝试将我的txt文件转换为pandas数据帧。 第一个多行是这样的,

['Tue Sep 12 15:13:56 +0000 2017', 'text. ', 0, 'en', 390, 529, 7138, 15727, False, -84.395235, 33.771232]
['Tue Sep 12 15:13:59 +0000 2017', "text", 0, 'en', 648, 891, 2087, 5801, False, -84.321948, 33.752879]
['Tue Sep 12 15:14:01 +0000 2017', 'text', 0, 'en', 217, 222, 959, 958, False, -82.849182, 27.865251]
['Tue Sep 12 15:14:06 +0000 2017', 'text', 0, 'en', 71, 85, 2357, 1290, False, -82.29976, 27.857254]

每个列表中每个元素的说明是

time, text, retweet_count, language, friends_count, followers_count, favourites_count, status_count, verified

我使用pandas,但它不适用于我倾向于。

df = pd.read_csv("second.txt", sep=',')

然后我有近100,000列,0行。如何将此文件成功转换为数据框? 谢谢!

2 个答案:

答案 0 :(得分:1)

我会在每行中读取一个列表,然后传递给DataFrame构造函数:

In [11]: import ast

In [12]: pd.DataFrame([ast.literal_eval(line) for line in open("second.txt")])
Out[12]:
                               0       1   2   3    4    5     6      7      8          9          10
0  Tue Sep 12 15:13:56 +0000 2017  text.    0  en  390  529  7138  15727  False -84.395235  33.771232
1  Tue Sep 12 15:13:59 +0000 2017    text   0  en  648  891  2087   5801  False -84.321948  33.752879
2  Tue Sep 12 15:14:01 +0000 2017    text   0  en  217  222   959    958  False -82.849182  27.865251
3  Tue Sep 12 15:14:06 +0000 2017    text   0  en   71   85  2357   1290  False -82.299760  27.857254

literal_eval会将字符串转换为相应的python列表:

In [21]: line = "['Tue Sep 12 15:13:56 +0000 2017', 'text. ', 0, 'en', 390, 529, 7138, 15727, False, -84.395235, 33.771232]"

In [22]: ast.literal_eval(line)
Out[22]:
['Tue Sep 12 15:13:56 +0000 2017',
 'text. ',
 0,
 'en',
 390,
 529,
 7138,
 15727,
 False,
 -84.395235,
 33.771232]

答案 1 :(得分:0)

我想出了这个问题。 一旦在python代码中插入到外部列表中的内部列表,我添加了\n。 然后@AndyHayden解决方案正常运作。