Python 使用大量数据插入列

Python 使用大量数据插入列,python,pandas,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']

我有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\u列表
dataframe,在
df
之后插入新列

df
是具有3m行的单个数据帧

ori_local_name
des_local_name
是新定义的数据,可从免费定义的字典
toll_info
中找到
ori_local_name
des_local_name
可以沿每行重复

但在浓缩
本地_列表
df
之前,处理3m行太慢了


有没有办法提高插入列的速度

停止循环。只需使用以下命令立即创建新列:


您不应该调用名称以双下划线开头的函数(如
df.\uu len\uu()
)。相反,使用
len(df)
或者更好的方法是使用
df.shape[0]
。您似乎是在追加行,而不是使用矢量化。附加到数据帧(
local_list
)是一项昂贵的操作。尝试附加完整的数据帧,而不是行。@ritchie46您能解释更多细节吗?我想在dfIf中添加(按列)本地_列表,如果您能提供有关数据外观的更多详细信息。或者举一个假数据的小例子。我自己真是个愚蠢的问题。。。我解决了这些问题,但仍然想找出有效地在pandas中添加行的方法
df['ORI_LOCAL_NAME'] = df['ORI_TOLL_NAME'].map(toll_info)