Python 3.x 比较panda数据帧索引并更新行
我有两个excel文件,我读熊猫。我将文件1中的索引与文件2中的索引进行比较(长度不相同(例如:10100),如果它们匹配,则第二个文件中的行[index]将为零,否则不会更改。我使用for和if循环进行此操作,但我要处理的数据越多(1e3,5e3),运行时间会变长。那么,有没有更好的方法来执行这种比较呢?下面是我使用的示例Python 3.x 比较panda数据帧索引并更新行,python-3.x,pandas,Python 3.x,Pandas,我有两个excel文件,我读熊猫。我将文件1中的索引与文件2中的索引进行比较(长度不相同(例如:10100),如果它们匹配,则第二个文件中的行[index]将为零,否则不会更改。我使用for和if循环进行此操作,但我要处理的数据越多(1e3,5e3),运行时间会变长。那么,有没有更好的方法来执行这种比较呢?下面是我使用的示例 df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]], index=[4, 5,
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
index=[4, 5, 6], columns=['A', 'B', 'C'])
df1 = pd.DataFrame([['w'], ['y' ], ['z']],
index=[4, 5, 1])
for j in df1.index:
for i in df.index:
if i == j:
df.loc[i, :] = 0
else:
df.loc[i, :] = df.loc[i, :]
print(df)
此处不需要循环,您可以通过使用将值设置为每行
0
(必要时将索引
转换为系列
,以避免值错误:数组条件必须与自身形状相同
):
或者,如果想要提高性能,请:
arr = np.where(df.index.isin(df1.index)[:, None], 0, df)
df = pd.DataFrame(arr, index=df.index, columns=df.columns)
print(df)
A B C
4 0 0 0
5 0 0 0
6 10 20 30
此处不需要循环,您可以通过使用将值设置为每行
0
(必要时将索引
转换为系列
,以避免值错误:数组条件必须与自身形状相同
):
或者,如果想要提高性能,请:
arr = np.where(df.index.isin(df1.index)[:, None], 0, df)
df = pd.DataFrame(arr, index=df.index, columns=df.columns)
print(df)
A B C
4 0 0 0
5 0 0 0
6 10 20 30