Python 使用大量数据插入列
我有54个CSV文件,每个文件有300万行 我想为每个CSV文件添加一个新列 因此,我实施如下: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']
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)