比较熊猫数据框索引并更新行

时间:2020-04-12 12:24:30

标签: python-3.x pandas

我有两个熊猫读取的Excel文件。我正在比较文件1中的索引和文件2中的索引(长度不相同(例如:10,100),如果它们匹配,则第二个文件中的row [index]将为零,否则将保持不变。 for和if为此循环,但是我要处理的数据越多(1e3,5e3),运行时间就会变长。那么,有没有更好的方法进行这种比较?这是我正在使用的示例。

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)

1 个答案:

答案 0 :(得分:2)

这里不需要循环,您可以将DataFrame.maskSeries.isin设置为每行0的值(为避免{,必须将index转换为Series {1}}):

ValueError: Array conditional must be same shape as self

或者如果需要提高性能,则使用Index.isinnumpy.where

df = df.mask(df.index.to_series().isin(df1.index), 0)
相关问题