python - 使用 Python Pandas 处理双 for 循环

标签 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

这个 Action 很简单但是不适合处理大的DataFrames, 提前致谢

编辑:数据帧的大小不一定相同

最佳答案

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

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

你得到

    C   D
0   2   1
1   3   1
2   1   1

关于python - 使用 Python Pandas 处理双 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031204/

相关文章:

python - pandas 中分组数据框的 astype 方法失败

dataframe - Spark Scala Cassandra 连接器删除所有所有行失败,IllegalArgumentException 要求失败异常

python - 如何在 Pygame 中用浮点半径画一个圆?

python - 按多列分组

python - 为什么我在这段代码中得到 "TypeError: unorderable types: str() < int()"?

python - 删除任何列子集中具有空值的行( Pandas )

python - 将 Pandas Dataframes 与不对齐的列合并时出现问题

python - 将 DataFrame 列拆分为两个 + MultiIndex

python - 根据另一个数据框中给定的值更新数据框列名

Python、Windows 控制台和编码(cp 850 与 cp1252)