【问题标题】:Write each row of pandas dataframe into a new text file - pythonic way将熊猫数据框的每一行写入一个新的文本文件 - pythonic方式
【发布时间】:2016-02-10 17:58:01
【问题描述】:

如果有办法解析熊猫数据框行并将每行的内容写入新的文本文件,我正在尝试搜索。我的数据框由一个名为评论的列组成。

我希望对电影评论进行一些情绪分析,并且我需要将每条评论放在单独的文本文件中。有人可以在这里帮助我。

【问题讨论】:

  • 这样会非常低效,这样做的目的是什么?
  • 只是为了进行分类。我的要求是这样的
  • 创建一个文件名变量,每次写入新行时都会更改,然后使用 w 参数打开该文件名
  • 您能否建议将数据从数据框写入文本文件的格式? @RNar 我一直在想这个问题。 to_csv 是否适用于此?
  • 我不建议这样做,不。因为你想为每一行写一个新文件,遍历这些行然后只有f = open(filename, 'w')然后f.write(row)之类的东西。只要确保每次都更改filename

标签: python pandas rows


【解决方案1】:

我已经写了这样的东西,它可以工作。不管怎样,谢谢你们的投入

for index, row in p.iterrows():
    if i > len(p):
       break
    else:
       f = open(str(i)+'.txt', 'w')
       f.write(row[0])
       f.close()
       i+=1

其中 p 是一个数据框。

【讨论】:

  • 对于其他收到 Unicode 错误的人:将 f = open(str(i)+'.txt', 'w') 更改为 f = open(str(i)+'.txt' , 'w', encoding='utf-8')
【解决方案2】:

它仍然效率低下,但由于需要它,这是一种可能的解决方案。

import pandas as pd
from io import StringIO

data="""
column1 column2
c1 c2
c3 c4
c5 c6
"""

df = pd.read_csv(StringIO(data), delimiter='\s+')

i=0
for row in df.values:
    filename = 'testdir/review{}.csv'.format(i)
    row.tofile(filename, sep=",", format="%s")
    i+=1

这会将值作为一个数组,write 将数据保存到一个名为 review0.csvreview1.csv... /p>

【讨论】:

    【解决方案3】:

    这是另一种方法。如果它不存在,这将创建一个目标文件夹。

    import pandas as pd
    from pathlib import Path
    
    root_location = Path("/my/root/path")
    os.makedirs(root_location, exist_ok=True)
    df = pd.read_csv(my_csv) # for example
    
    for index, row in df.iterrows():
        with open(root_location / (str(row["file_name"]) + ".txt"), "w") as f:
            f.write(str(row["file_contents"]))
    

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 2016-12-25
      • 1970-01-01
      • 2019-03-12
      • 2018-12-20
      • 2018-09-09
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多