Pandas用大量数据插入列

时间:2018-03-25 08:31:15

标签: python pandas

我有54个CSV文件,每个文件有300万行。

我想为每个CSV文件添加一个新列。

所以我实现如下:

local_list = pd.DataFrame(columns=["ORI_LOCAL_NAME","DES_LOCAL_NAME"])

for i in range(0,df.__len__()):
    row = df.iloc[i,:]
    ori_name = row['ORI_TOLL_NAME']
    des_name = row['DES_TOLL_NAME']
    ori_local_name = toll_info[ori_name]
    des_local_name = toll_info[des_name]
    local_list = local_list.append({"ORI_LOCAL_NAME": ori_local_name, 
                                    "DES_LOCAL_NAME": des_local_name},
                          ignore_index=True)


df:
            DATE   ORI_TOLL_NAME DES_TOLL_NAME  
0        20130201              a            a   
1        20130201              a            b   
2        20130201              a            c   
3        20130201              a            d  

desired df via conneting local_list:
            DATE   ORI_TOLL_NAME DES_TOLL_NAME ORI_LOCAL_NAME DES_LOCAL_NAME   
0        20130201              a            a               A              A
1        20130201              a            b               A              A 
2        20130201              a            c               A              B
3        20130201              a            d               A              C

我制作local_list数据框以在df之后插入新列。

df是单个dataFrame,它有3米的行。

ori_local_namedes_local_name新定义的数据可从自由定义的字典toll_info中找到。 ori_local_namedes_local_name可以在每行中重复。

但在结束local_listdf之前,处理3米行的速度太慢了......

有没有办法提高插入柱的速度?

1 个答案:

答案 0 :(得分:1)

停止循环播放。只需使用Series.map()

一次创建新列
df['ORI_LOCAL_NAME'] = df['ORI_TOLL_NAME'].map(toll_info)