我有一个包含数百万行的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进行一些过滤。然后我想继续做上面的事情。我想过使用pandas df.iterrows()或 df.itertuples(),但它确实很慢。
有没有办法直接将pandas数据帧转换为csv.reader(),以便我可以继续使用上面的代码。如果我使用csv_rows = to_csv()
,它会给出一个长字符串。当然,我可以写出一个csv,然后再读一遍。但我想知道是否有办法跳过额外的读写文件。
答案 0 :(得分:2)
你可以这样做..
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
答案 1 :(得分:0)
为什么不将“创建字典”功能应用于目标列? 类似的东西:
df['column_name'] = df['column_name'].apply(Create Dictionary)