#pandas #csv #export-to-csv #data-cleaning
#pandas #csv #экспорт в csv #очистка данных
Вопрос:
У меня есть текстовый файл скрипта, и он упорядочен следующим образом:
0 "character one" "dialogue for character one."
1 "character two" "dialogue for character two."
2 "character one" "dialogue for character one again"
...
etc
Моя проблема в том, что я хочу проанализировать этот текст, и мне нужно, чтобы он был в формате .csv, где символ находится в первом столбце, а диалог — во втором столбце.
Я прочитал файл .txt в pandas следующим образом:
txt_ep_4 = pd.read_table('/Users/nathancahn/star_wars/0_data/ep_IV_script.txt')
итак, теперь у меня есть ряд данных pandas (а не фрейм данных) для взаимодействия.
В основном я пробовал разные методы разделения текста на столбцы с помощью Series.str.split(), но безуспешно. Раньше я указывал series_txt_ep_4.str.split(pat=" ")
разделение через пробел, но вместо этого оно разделялось через каждый пробел.
Опять же, мой идеальный результат состоял бы в том, чтобы первый столбец был именем символа, а второй столбец — строкой диалога, связанной с этим символом.
Ответ №1:
Я считаю, что вам нужно read_csv
с параметрами sep
и names
для новых имен столбцов, потому что в pandas 0.24.2
get:
Предупреждение на будущее: read_table устарел, вместо этого используйте read_csv .
temp=u'''"character one" "dialogue for character one."
"character two" "dialogue for character two."
"character one" "dialogue for character one again"'''
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="s ", names=['a','b'])
#alternative
#df = pd.read_csv(pd.compat.StringIO(temp), delim_whitespace=True, names=['a','b'])
print (df)
a b
0 character one dialogue for character one.
1 character two dialogue for character two.
2 character one dialogue for character one again
Редактировать:
Если значения также имеют заголовок:
temp=u""""character" "dialogue"
"1" "THREEPIO" "Did you hear that? They've shut down the main reactor. We'll be destroyed for sure. This is madness!"
"2" "THREEPIO" "We're doomed!"
"3" "THREEPIO" "There'll be no escape for the Princess this time."
"4" "THREEPIO" "What's that?"
"5" "THREEPIO" "I should have known better than to trust the logic of a half-sized thermocapsulary dehousing assister..."
"6" "LUKE" "Hurry up! Come with me! What are you waiting for?! Get in gear!"
"7" "THREEPIO" "Artoo! Artoo-Detoo, where are you?"
"8" "THREEPIO" "At last! Where have you been?"
"9" "THREEPIO" "They're heading in this direction. What are we going to do? We'll be sent to the spice mines of Kessel or smashed into who knows what!"
"10" "THREEPIO" "Wait a minute, where are you going?"
"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="s ")
print (df)
character dialogue
1 THREEPIO Did you hear that? They've shut down the main...
2 THREEPIO We're doomed!
3 THREEPIO There'll be no escape for the Princess this time.
4 THREEPIO What's that?
5 THREEPIO I should have known better than to trust the l...
6 LUKE Hurry up! Come with me! What are you waiting...
7 THREEPIO Artoo! Artoo-Detoo, where are you?
8 THREEPIO At last! Where have you been?
9 THREEPIO They're heading in this direction. What are we...
10 THREEPIO Wait a minute, where are you going?
Комментарии:
1. Интересно, похоже, это правильное направление. Однако я не уверен, что на 100% понимаю этот код. Итак
temp
, здесь должен быть pd.series, который я передаю? Потому что я получаю сообщение об ошибке при попытке прочитать pd.series в это.2. @NathanCahn — Нет, не передавайте серии, используйте
txt_ep_4 = pd.read_csv('/Users/nathancahn/star_wars/0_data/ep_IV_script.txt', sep="s ", names=['a','b'])
3. Ах, хорошо, похоже, что это дало фрейм данных pandas, который обрезается после «символа» и теперь не включает диалог. Теперь я понимаю, что это может быть связано с тем, что мой файл .txt фактически содержит номер индекса перед столбцом «символ». Вот так: « «1» «символ» «диалог» «2» «символ» «диалог» и т. Д. «
4. @NathanCahn — Являются ли данные конфиденциальными?
5. @NathanCahn — поскольку лучше всего работать с файлом, если некоторые цитаты и тому подобное, если вставить значения для вопроса, возможно, некоторые значения следует изменить. итак, возможно ли загрузить первые 5 строк с файлом в gdocs, dropbox или аналогичные и поделиться ссылкой?