从txt文件生成熊猫数据框

时间:2018-12-04 16:21:43

标签: python pandas

我有一个大型的txt文件,格式如下:

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

我需要生成类似于以下内容的熊猫数据框:

  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

谢谢您的时间

2 个答案:

答案 0 :(得分: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

尽管您可能需要整理输入文件以获取所需的内容。

答案 1 :(得分: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')