使用Python Pandas处理double for循环

时间:2017-07-11 09:55:34

标签: python pandas dataframe

为了处理多个DataFrame上的修改,我有一段可行的代码,但我想提高它的效率。

我确信这个问题有更好的解决方案。

In [1]: import pandas as pd

In [1]: df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])

In [2]: df

Out[2]: 
       A  B
    0  1  2
    1  1  3
    2  4  6

In [1]: df2 = pd.DataFrame([[1, 1], [1, 1], [1, 1]], columns=['C', 'D'])

In [2]: df2

Out[2]: 
       C  D
    0  1  1
    1  1  1
    2  1  1

事实上,为了识别值并在相等的函数中替换,例如,我使用double for llop来浏览Dataframes:

for i in range(0, df['A'].size):
    for j in range(0, df2['C'].size):
        if df.loc[i,'A'] == df2.loc[j, 'C'] :
            df2.loc[j, 'C'] = df.loc[i,'B']
        else :
            pass
In [2]: df2

Out[2]: 
       C  D
    0  2  1
    1  3  1
    2  1  1

此操作非常简单,但不适合处理大型DataFrame, 非常感谢提前

编辑:数据框的大小不一定

1 个答案:

答案 0 :(得分:1)

我假设您正在处理相同大小的数据框,在这种情况下

df2.loc[df2['C'] == df['A'], 'C'] = df['B']

你得到了

    C   D
0   2   1
1   3   1
2   1   1