У меня большой файл 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
Спасибо за ваше время
Вы можете использовать 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
Хотя вам может потребоваться убрать ваш входной файл, чтобы получить именно то, что вы хотите.
Вы читаете 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')