【问题标题】:How to convert Pandas Dataframe to csv reader directly in python?如何在 python 中直接将 Pandas Dataframe 转换为 csv 阅读器?
【发布时间】:2016-11-11 02:46:29
【问题描述】:

我有一个包含数百万行的 csv 文件。我曾经像这样从 csv 文件中创建字典

 with open('us_db.csv', 'rb') as f:
    data = csv.reader(f)
    for row in data:
       Create Dictionary based on a column

现在要根据某些条件过滤行,我使用 pandas Dataframe,因为它在这些操作中非常快。我将 csv 加载为 pandas Dataframe 进行一些过滤。然后我想继续做上面的事情。我曾想过使用熊猫 df.iterrows()df.itertuples() 但它真的很慢。

有没有办法直接将pandas数据帧转换成csv.reader(),这样我就可以继续使用上面的代码了。如果我使用csv_rows = to_csv(),它会给出一个长字符串。当然,我可以写出一个 csv,然后再从中读取。但我想知道是否有办法跳过对文件的额外读写。

【问题讨论】:

    标签: python csv pandas dataframe


    【解决方案1】:

    你可以做这样的事情..

    import numpy as np
    import pandas as pd
    from io import StringIO
    import csv
    
    #random dataframe
    df = pd.DataFrame(np.random.randn(3,4))
    
    buffer = StringIO()  #creating an empty buffer
    df.to_csv(buffer)  #filling that buffer
    buffer.seek(0) #set to the start of the stream
    
    for row in csv.reader(buffer):
        #do stuff
    

    【讨论】:

    • 谢谢。那行得通。当我使用 python2.7 时,我不得不使用 BytesIO 而不是 StringIO(),因为我在使用 utf-8 编码时遇到了一些问题。
    【解决方案2】:

    为什么不对目标列应用创建字典功能呢? 比如:

    df['column_name'] = df['column_name'].apply(Create Dictionary)
    

    【讨论】:

    • 我需要整行在函数内部可用。应用一次只发送一个值。一次没有一排。谢谢。
    猜你喜欢
    • 2013-03-06
    • 2021-06-14
    • 2017-11-14
    • 2018-06-05
    • 2018-01-23
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多