将数据帧分配给 for 循环外的变量或直接在 Python 中的 for 循环内使用它
Assign dataframe to variable outside for loop or use it directly inside for loop in Python
选项 1:
a = np.unique(df.values)
for i in range():
if df2.loc[i,'col1'] in a:
df2.loc[i,'col2'] = 'Ok'
else:
df2.loc[i,'col2'] = 'No'
选项 2:
for i in range():
if df2.loc[i,'col1'] in np.unique(df.values):
df2.loc[i,'col2'] = 'Ok'
else:
df2.loc[i,'col2'] = 'No'
Python 在内存和速度方面哪个更好?
为了清楚 for 循环内的操作而进行了编辑。
就内存而言,选项 2 可能更好,因为您没有创建新变量。就速度而言,不会有区别,因为它们 df.values
和 a
指的是同一条数据。可以通过is关键字查看两个变量是否引用同一条数据:var1 is var2
。但是,我们不知道您对这些数据做了什么。
两者都是低效的,当你在每一步重新计算唯一值时,第二个更差。
改为使用矢量代码:
df2['col2'] = df2['col1'].isin(np.unique(df.values)).map({True: 'Ok', False: 'No'})
选项 1:
a = np.unique(df.values)
for i in range():
if df2.loc[i,'col1'] in a:
df2.loc[i,'col2'] = 'Ok'
else:
df2.loc[i,'col2'] = 'No'
选项 2:
for i in range():
if df2.loc[i,'col1'] in np.unique(df.values):
df2.loc[i,'col2'] = 'Ok'
else:
df2.loc[i,'col2'] = 'No'
Python 在内存和速度方面哪个更好?
为了清楚 for 循环内的操作而进行了编辑。
就内存而言,选项 2 可能更好,因为您没有创建新变量。就速度而言,不会有区别,因为它们 df.values
和 a
指的是同一条数据。可以通过is关键字查看两个变量是否引用同一条数据:var1 is var2
。但是,我们不知道您对这些数据做了什么。
两者都是低效的,当你在每一步重新计算唯一值时,第二个更差。
改为使用矢量代码:
df2['col2'] = df2['col1'].isin(np.unique(df.values)).map({True: 'Ok', False: 'No'})