我有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_name
和des_local_name
新定义的数据可从自由定义的字典toll_info
中找到。 ori_local_name
和des_local_name
可以在每行中重复。
但在结束local_list
和df
之前,处理3米行的速度太慢了......
有没有办法提高插入柱的速度?
答案 0 :(得分:1)
停止循环播放。只需使用Series.map()
:
df['ORI_LOCAL_NAME'] = df['ORI_TOLL_NAME'].map(toll_info)