【问题标题】:How to parse a string into a csv in python如何在python中将字符串解析为csv
【发布时间】:2021-03-30 17:29:43
【问题描述】:

我有一个 str 的数据看起来像

2013/04/15, 54332, 2013/04/16, 67608, 2013/04/17, 56535, 2013/04/18, 46484

有一个日期,然后是一个值,我如何将它放入包含日期和值列的 csv 中?我试过这样做:

df = pd.Dataframe(list(reader(data)))
df.to_csv('Data.csv', index=False)

但是当我这样做时,它会将字符串的一个字符放在每一行并且只放在一列中。

【问题讨论】:

  • 查看python内置函数拆分的文档,将逗号分隔的字符串转换为列表。然后你可以用列表迭代来解决你的问题。

标签: python pandas csv parsing


【解决方案1】:

以下应该有效:

import pandas as pd

l=[i.strip() for i in s.split(',')]
dates=[l[i] for i in range(0,len(l),2)]
values=[l[i] for i in range(1,len(l),2)]

df=pd.DataFrame({'date':dates, 'value': values})

>>> print(df)

         date    value
0  2013/04/15  54332
1  2013/04/16  67608
2  2013/04/17  56535
3  2013/04/18  46484

然后您可以将其保存为 csv 文件,如下所示:

df.to_csv('Data.csv', index=False)

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    data = data.replace(' ', '').split(',')
    df = pd.DataFrame({'Date': data[::2], 'Value': data[1::2]})
    

    输出:

             Date  Value
    0  2013/04/15  54332
    1  2013/04/16  67608
    2  2013/04/17  56535
    3  2013/04/18  46484
    

    【讨论】:

    • 为什么是replace() 而不仅仅是split(', ') - 即用逗号和空格?
    • 很好的建议@buran!尽管split(', ') 可以很好地处理此示例数据,但如果缺少任何空格(或有多个空格),它可能无法正常工作。使用replace 可以避免此类问题。
    • 您的代码应该与 OP 提供的示例数据一起使用。他们应该指出是否有可能获得不同的意见。如果我们保持相同的推理 - 如果有分号而不是逗号,或者模式日期值中断怎么办?只是我的 2 美分。
    • 它适用于样本数据。我曾经使用 csv 文件,逗号之间的空格是很常见的问题,而其他问题则很少见。这就是我写这个的原因(处理空白的习惯)。
    • 也就是说,我完全同意使用split(', ') 也可以,而且它还可以使代码更清晰(我认为这也很重要)。如果需要,请随时编辑答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多