Например, у меня есть два фрейма данных, которые выглядят следующим образом
df1
c1 c2 c3 c4 c5 c6 c7
2006-01-02 10:45 xxx0 yyy0 zzz0 rrr0 sss0
2006-01-02 11:00 xxx1 yyy1 zzz1 rrr1 sss1
2006-01-03 11:15 xxx2 yyy2 zzz2 rrr2 sss2
2006-01-03 11:30 xxx3 yyy3 zzz3 rrr3 sss3
2006-01-04 11:45 xxx4 yyy4 zzz4 rrr4 sss4
2006-01-05 11:00 xxx5 yyy5 zzz5 rrr5 sss5
df2
c1 c2 c3 c4
2006-01-02 10:45 aaa0 bbb0
2006-01-03 11:30 aaa1 bbb1
2006-01-04 10:40 aaa2 bbb2
2006-01-05 11:00 aaa3 bbb3
Я хочу отредактировать два столбца df1 так, чтобы он содержал значения, которые являются общими для столбцов c1 и c2 df1 и df2
Вывод:
df1
c1 c2 c3 c4 c5 c6 c7
2006-01-02 10:45 xxx0 yyy0 zzz0 rrr0 sss0
2006-01-03 11:30 xxx3 yyy3 zzz3 rrr3 sss3
2006-01-05 11:00 xxx5 yyy5 zzz5 rrr5 sss5
То, что я пробовал, это
dfnewdate = df1[(df1[c1].isin(df2[c1])]
df1 = dfnewdate
dfnewtime = df1[(df1[c2].isin(df2[c2])]
df1 = dfnewtime
Дата была успешно отфильтрована, за исключением того, что она пропущена первый ряд df1 и не отфильтровывает время (у него все еще есть второй ряд старого df1).
My output
df1
c1 c2 c3 c4 c5 c6 c7
2006-01-02 10:45 xxx0 yyy0 zzz0 rrr0 sss0
2006-01-02 11:00 xxx1 yyy1 zzz1 rrr1 sss1
2006-01-03 11:15 xxx2 yyy2 zzz2 rrr2 sss2
2006-01-03 11:30 xxx3 yyy3 zzz3 rrr3 sss3
2006-01-05 11:00 xxx5 yyy5 zzz5 rrr5 sss5
Что-то не так с моим кодом? Есть ли альтернативный способ сделать это?