【问题标题】:export to csv the value of only one cell in a pandas dataframe将熊猫数据框中仅一个单元格的值导出到 csv
【发布时间】:2021-04-21 08:10:48
【问题描述】:

我正在使用一个基本上有 2 列的数据框。

在第一列中,每个单元格都包含一个字符串,该字符串是与此类似的 ics (iCalendar) 文件的主体:

df['body'][0]

BEGIN:VCALENDAR
VERSION:2.0
PRODID:icalendar_blablabla
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART:20210421T150000Z
DTEND:20210421T163000Z
DESCRIPTION:Webinar
LOCATION:Webinar
SUMMARY:Webinar
TRANSP:OPAQUE
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

在第 2 列中,每个单元格包含与第 1 列关联的 ics 文件的名称,在这种情况下可能是:

df['filename'][0]

this_is_the_webinar_0.ics

所以结果是这样的:

    body                                                filename
0   BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:icalendar...   this_is_the_webinar_0.ics
1   BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:icalendar...   this_is_the_webinar_1.ics
2   BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:icalendar...   this_is_the_webinar_2.ics

所以现在我想将每个单元格df['body'][i] 的内容导出到一个名为df['filename'][i] 的txt 文件中。

类似于:

df['body'][i].to_csv(df['filename'][i]], index=False)

但实际上我得到了错误:AttributeError: 'str' object has no attribute 'to_csv',因为我试图导出一个字符串而不是整个数据帧。

知道如何解决吗?

非常感谢任何帮助 提前致谢

g

【问题讨论】:

  • 你到底想要什么文件?
  • 生成ics文件,文件名取自'filename'列,内容取自文件名同一行的'body'列。

标签: python-3.x pandas dataframe export-to-csv icalendar


【解决方案1】:

可以简化,不用to_csv()

  • 使用 lorem 合成的内容
  • 只需遍历 bodyfilename 写入文本文件
from lorem_text import lorem
from pathlib import Path

df = pd.DataFrame([{"body":lorem.paragraph(), "filename":Path.cwd().joinpath(f"name_{f}.ics")} for f in range(10)])
for body, filename in df.loc[:,["body","filename"]].values:
    with open(filename, "w") as f: f.write(body)

【讨论】:

    【解决方案2】:

    同时我找到了另一个不涉及 pandas 数据框的解决方案

    wb = openpyxl.load_workbook('file_with_data.xlsx')
    sheet = wb['Sheet1']
    for row in range(2, sheet.max_row + 1):
        savedfile = open(sheet.cell(row, column=2).value, 'w') #column 2 contains the name of ics files
        savedfile.write(sheet.cell(row, column=1).value)       #column 1 contains the body of each ics file
        savedfile.close()
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2020-09-26
      • 2014-12-26
      • 2018-12-18
      • 2020-03-27
      相关资源
      最近更新 更多