Прочитайте текстовый файл в dataframe, разделив на табуляцию и пробел и новую строку - PullRequest
0 голосов
/ 04 декабря 2018

Я столкнулся с проблемой при чтении TXT-файла в Panda DataFrame.У меня есть такие данные в текстовом файле.

97ebd0c6680f7c0535dbfdead6e51b4b    dd65fa250fca2833a3a8c16d2cf0457c
ed180d7daf639d936f1aeae4f7fb482f    4725c39a5e5f4c188d382da3910b3f3f
3e12208dd0be281c92a6ab57d9a6fb32    24  2016-01-01 13:37:23

92c3ac9251cc9b5aab90b114a1e363be    c077e0297639edcb1df6189e8cda2c3d
191a180f0a262aff3267775c4fac8972    82cc4851f9e4faa4e54309f8bb73fd7c
b05379ac3f9b7d99370d443cfd5dcc28    2   2016-01-01 09:47:54
.....

Обратите внимание, что данные разделены символами табуляции, перевода строки и пробелов.Всего 8 столбцов.То, что я написал, это.Это решение работает на вкладках и символах новой строки, но не работает с пробелами.

data = [i.strip('\n').split('\t') for i in open('./training_data/order_data/order_data_2016-01-01')]

оно производит что-то вроде этого.

[['97ebd0c6680f7c0535dbfdead6e51b4b','dd65fa250fca2833a3a8c16d2cf0457c',
  'ed180d7daf639d936f1aeae4f7fb482f','4725c39a5e5f4c188d382da3910b3f3f',
  '3e12208dd0be281c92a6ab57d9a6fb32', '24', '2016-01-01 13:37:23'],
 ['92c3ac9251cc9b5aab90b114a1e363be', 'c077e0297639edcb1df6189e8cda2c3d', 
  '191a180f0a262aff3267775c4fac8972', '82cc4851f9e4faa4e54309f8bb73fd7c',
  'b05379ac3f9b7d99370d443cfd5dcc28', '2', '2016-01-01 09:47:54']

обратите внимание, что оно разделено на вкладках и символах новой строки, но с ошибками на пробелах.

'2016-01-01 13:37:23'

Я также пробовал это, но не работает.

data=pd.read_fwf('./training_data/order_data/order_data_2016-01-01', sep=' ')
data = re.split(r'\t', str(data))

Не могли бы вы предложить обновление в этом коде?Он генерирует список, который я могу преобразовать в фрейм данных.но если у вас есть решения, которые генерируют фрейм данных напрямую, это будет полезно.Спасибо

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

pd.read_table ('your_file', header = None, sep = '\ s +'). Это решение работало, поскольку оно встретит весь один пробел + мультипространство (табуляция).

0 голосов
/ 04 декабря 2018

Вы можете использовать re.split:

import re, pandas
new_data = list(filter(None, [re.split('\s+', i.strip('\n')) for i in open('filename.txt')]))
result = pandas.DataFrame(new_data)

new_data Выход:

[['97ebd0c6680f7c0535dbfdead6e51b4b', 'dd65fa250fca2833a3a8c16d2cf0457c'], ['ed180d7daf639d936f1aeae4f7fb482f', '4725c39a5e5f4c188d382da3910b3f3f'], ['3e12208dd0be281c92a6ab57d9a6fb32', '24', '2016-01-01', '13:37:23'], ['92c3ac9251cc9b5aab90b114a1e363be', 'c077e0297639edcb1df6189e8cda2c3d'], ['191a180f0a262aff3267775c4fac8972', '82cc4851f9e4faa4e54309f8bb73fd7c'], ['b05379ac3f9b7d99370d443cfd5dcc28', '2', '2016-01-01', '09:47:54']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...