Как вы, кажется, не в состоянии опубликовать типичный пример я продемонстрирую один подход с использованием merge
с парами indicator=True
:
Так сгенерировать данные:
In [116]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df
Out[116]:
a b c
0 -0.134933 -0.664799 -1.611790
1 1.457741 0.652709 -1.154430
2 0.534560 -0.781352 1.978084
3 0.844243 -0.234208 -2.415347
4 -0.118761 -0.287092 1.179237
взять подмножество:
In [118]:
df_subset=df.iloc[2:3]
df_subset
Out[118]:
a b c
2 0.53456 -0.781352 1.978084
сейчас выполняют левые merge
с парам indicator=True
это добавит _merge
столбец, который указывает, является ли строка left_only
, both
или right_only
(последняя не появится в этом примере), и мы фильтруем слитый ФР показать только left_only
:
In [121]:
df_new = df.merge(df_subset, how='left', indicator=True)
df_new = df_new[df_new['_merge'] == 'left_only']
df_new
Out[121]:
a b c _merge
0 -0.134933 -0.664799 -1.611790 left_only
1 1.457741 0.652709 -1.154430 left_only
3 0.844243 -0.234208 -2.415347 left_only
4 -0.118761 -0.287092 1.179237 left_only
здесь является оригинальным объединенным df:
In [122]:
df.merge(df_subset, how='left', indicator=True)
Out[122]:
a b c _merge
0 -0.134933 -0.664799 -1.611790 left_only
1 1.457741 0.652709 -1.154430 left_only
2 0.534560 -0.781352 1.978084 both
3 0.844243 -0.234208 -2.415347 left_only
4 -0.118761 -0.287092 1.179237 left_only
Что это за подмножество? это число значений индекса, конкретных значений и т. д.? – EdChum
Или вы просто хотите разделить 2 dfs? например, 'merged = df.merge (df1, indicator = True, how = 'left')' 'merged [merged ['_ merge'] == 'left_only']' – EdChum