сгенерировать pandas dataframe из текстового файла

1

У меня большой файл txt со следующим форматом:

0
1
2
3
4
La situacion es preocupante
5
6
Radio es parte de la vida
7
Dejare de querer muy pronto

Мне нужно создать кадр данных pandas, аналогичный:

  Texto
0 NaN
1 NaN
2 NaN
3 NaN
4 La situacion es preocupante
5 NaN
6 Radio es parte de la vida
7 Dejare de querer muy pronto

со следующим кодом я получаю неверный вывод:

import pandas as pd
data = pd.read_csv("nohup.out",sep="\\n")

    0
0   1
1   2
2   3
3   4
4   La situacion es preocupante
5   5
6   6
7   Radio es parte de la vida
8   7
9   Dejare de querer muy pronto

Спасибо за ваше время

  • 0
    Это выглядит правильно для меня, есть ли столбцы в исходном файле?
  • 0
    привет, это не правильно, потому что «Радио» должно быть в положении 6 и «Дежаре» в положении 7, но находится в положении 7 и 9 соответственно.
Показать ещё 2 комментария
Теги:
pandas

2 ответа

1

Вы можете использовать DataFrame.replace так:

df['0'].replace(to_replace=r'^\d*$', value=np.nan, regex=True)
0                            NaN
1                            NaN
2                            NaN
3                            NaN
4    La situacion es preocupante
5                            NaN
6                            NaN
7      Radio es parte de la vida
8                            NaN
9    Dejare de querer muy pronto

Хотя вам может потребоваться убрать ваш входной файл, чтобы получить именно то, что вы хотите.

0

Вы читаете CSV, у которого нет заголовка. В этом случае вы можете указать имя столбца при импорте фрейма данных.

Кроме того, я думаю, вам нужно заменить числовые значения на null. Попробуйте следующее:

import pandas as pd
data = pd.read_csv("C:/Test/list.txt", names=['Texto']) # read csv with header 'Texto', you don't need to specify separator
print (data)

Out[74]: 
                          Texto
0                             0
1                             1
2                             2
3                             3
4                             4
5   La situacion es preocupante
6                             5
7                             6
8     Radio es parte de la vida
9                             7
10  Dejare de querer muy pronto

Это результат по умолчанию. Теперь, чтобы заменить цифры на NaN, попробуйте:

data['Texto'] = data['Texto'].str.replace('\d+', 'NaN')
print (data)

Out[76]: 
                          Texto
0                           NaN
1                           NaN
2                           NaN
3                           NaN
4                           NaN
5   La situacion es preocupante
6                           NaN
7                           NaN
8     Radio es parte de la vida
9                           NaN
10  Dejare de querer muy pronto

Изменить: как намекнул @jezrael, сменил '\ d' на \d+ ', чтобы включить несколько цифр в код ниже:

data['Texto'] = data['Texto'].str.replace('\d+', 'NaN')
  • 0
    @jezrael, не уверен, нужен ли нам np.nan в этом случае. Я предполагаю, что наличие строки 'NaN' будет автоматически считаться нулевым во время чтения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню