Создайте третий кадр данных на основе условия, примененного к двум кадрам данных - PullRequest
0 голосов
/ 14 января 2019

У меня есть два кадра данных:

df1 = pd.DataFrame(rng.rand(1000, 3), columns=['A', 'B', 'C'])
df2 = pd.DataFrame(rng.rand(1000, 3), columns=['A', 'B', 'C'])

У меня также есть столбец, состоящий из "Y" и "N":

df0['Split'] = ['Y', 'N', 'Y'...]

Я хочу создать третий кадр данных, который возвращает df1, если df0 ['Split'] = 'Y', и возвращает df2, если df0 ['Split'] = 'N'. Я хотел бы сохранить форму исходных двух кадров данных, если это возможно.

Я думал, что смогу сделать что-то вроде следующего:

if df0['Split'] == Y:
    return df1
if df0['Split'] == N:
    return df2
else:
    return 0

На самом деле у меня гораздо больше столбцов, чем от А до С. Благодарим вас за помощь.

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать булеву фильтрацию для создания двух фреймов данных, объединить их с помощью pd.concat, затем sort_index. Решение предполагает, что все 3 кадра данных имеют одинаковый индекс.

mask = df0['Split'] == 'Y'
res = pd.concat([df1[mask], df2[~mask]]).sort_index()
...