如何从文本文件创建数据框

时间:2017-05-20 18:48:58

标签: python pandas dataframe nlp text-mining

我有一个文本文件。文件中的每一行都如下所示,但长度不同:

negative

当我使用http时,它会将其读入一列,我尝试将文件转换为Excel或CSV,但仍会将其转换为一列

我希望它是一个双列数据框,其中var allData={"uid": user_id, "emp_id": emp_id, "job_id": job_id} $http({ url: 'msg_check.php', method: "GET", // params: {'uid': user_id, 'emp_id': emp_id, 'job_id': job_id} params: allData }) .success(function(datas) { $scope.choices = datas; }); 位于其自己的列中,其余列位于另一列中。

3 个答案:

答案 0 :(得分:2)

首先将整个文件读入一个包含单列的DataFrame:

df = pd.read_csv('/path/to/file.txt', sep='~', header=None)

的产率:

In [50]: df
Out[50]:
                           0
0  negative aaa bbb ccc  ddd
1           positive qqq vvv

现在我们可以像这样解析它:

In [51]: df[['col1','col2']] = df.pop(0).str.extract(r'^([^\s]+)\s*(.*?)$', expand=True)

In [52]: df
Out[52]:
       col1              col2
0  negative  aaa bbb ccc  ddd
1  positive           qqq vvv

或:

In [65]: df[['col1','col2']] = df.pop(0).str.split(n=1, expand=True)

In [66]: df
Out[66]:
       col1              col2
0  negative  aaa bbb ccc  ddd
1  positive           qqq vvv

答案 1 :(得分:2)

您可以构建自己的解析器,如:

<强>代码:

def parse_my_file(filename):
    with open(filename) as f:
        for line in f:
            yield line.strip().split(' ', 1)

测试代码:

df = pd.DataFrame(parse_my_file('file1'))
print(df)

<强>结果:

          0                   1
0  negative  فينو اهبل ابن اهبل
1   neutral  فينو اهبل ابن اهبل
2  positive  فينو اهبل ابن اهبل

答案 2 :(得分:1)

输入:

from io import StringIO

table = """
negative فينو اهبل ابن اهبل
positive فينو اهبل ابن اهبل
neutral فينو اهبل ابن اهبل
negative فينو اهبل ابن اهبل
negative فينو اهبل ابن اهبل
negative فينو اهبل ابن اهبل
"""

读取文件:

df_in = pd.read_fwf(StringIO(table),widths=[8,1000])  
print(df_in)

输出:

  Unnamed: 0          Unnamed: 1
0   negative  فينو اهبل ابن اهبل
1   positive  فينو اهبل ابن اهبل
2    neutral  فينو اهبل ابن اهبل
3   negative  فينو اهبل ابن اهبل
4   negative  فينو اهبل ابن اهبل
5   negative  فينو اهبل ابن اهبل