2016-11-17 3 views
-2

Я хотел проанализировать данный файл по строкам. Файл имеет формат 'name age gender hobby1 hobby2...'.Анализ данных из файла

Первое, что пришло в голову, это использовать именованный кортеж формы namedtuple('info',['name','age', 'gender','hobby']).

Как сохранить данные в моем файле в список кортежей с соответствующим значением. Я попытался использовать line.split(), но я не мог понять, как я могу сэкономить пространство, разделенное хобби, до info.hobby.

Input file

+1

, пожалуйста, покажите всю работу, которую вы сделали до сих пор. это будет отправной точкой для обсуждения. показать файл данных. oh, и ошибки, если они есть. –

+0

Можете ли вы разместить выдержку? Как все разделено? Запястья, пробелы, вкладки? – rovr138

+1

Пожалуйста, покажите, какие попытки вы сделали до сих пор. – James

ответ

1

Если я вас правильно понимаю, вы можете использовать панд и передать «this_is_a_space» как ПСР, если данные, как это:

name age gender hobby1 hobby2 
steve 12 male xyz abc 
bob 29 male swimming golfing 
alice 40 female reading cooking 
tom 50 male sleeping 

и здесь синтаксис метода, описанного выше:

import pandas as pd 

df = pd.read_csv('file.txt', sep=' ') 
df.fillna(' ', inplace=True) 
df['hobby'] = df[['hobby1', 'hobby2']].apply(lambda i: ' '.join(i), axis=1) 
df.drop(['hobby1', 'hobby2'], axis=1, inplace=True) 

print df 

из:

name age gender    hobby 
0 steve 12 male   xyz abc 
1 bob 29 male swimming golfing 
2 alice 40 female reading cooking 
3 tom 50 male  sleeping 

EDIT: добавлены ваши данные из комментария выше

+0

Да, но я хотел иметь все хобби под одним именем поля , смысл instested hobby1 hobby2, я хочу, чтобы на выходе было только одно поле для хобби и перечислил их как [xyz abc] –

+0

Отредактировал мой ответ – anshanno

Смежные вопросы