Состояние панд на двух таймфреймах - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть 2 кадра данных df1 и df2

df1;

   A    B    C
0  11   22   55
1  66   34   54
2  0    34    66

df2;

   A    B    C
0  11   33   455
1  0     0   54
2  0    34    766

Оба кадра данных имеют одинаковые размеры.Я хочу сказать, если значение равно 0 в df2, тогда присвойте этому значению (на основе столбца и индекса) значение 0 в df1.

Таким образом, df1 будет

df1;

   A    B    C
0  11   22   55
1  0   0   54
2  0    34    66

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Использование where:

df1 = df1.where(df2.ne(0), 0)

print(df1)
    A   B   C
0  11  22  55
1   0   0  54
2   0  34  66
0 голосов
/ 28 декабря 2018

Другой способ -

df1 = df1[~df2.eq(0)].fillna(0)
0 голосов
/ 28 декабря 2018

Использование DataFrame.mask:

df1 = df1.mask(df2 == 0, 0)

Для повышения производительности используйте numpy.where:

df1 = pd.DataFrame(np.where(df2 == 0, 0, df1), 
                   index=df1.index, 
                   columns=df1.columns)

print (df1)
    A   B   C
0  11  22  55
1   0   0  54
2   0  34  66
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...