мои данные:
df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 2, 3], [7, 8, 8]]),columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 2, 3], [5, 8, 8]]),columns=['a', 'b', 'c'])
df1,df2:
a b c
0 1 2 3
1 4 2 3
2 7 8 8
a b c
0 1 2 3
1 4 2 3
2 5 8 8
Я хочу объединить строки из столбцов a
из обоих df во всех последовательностях, но только там, где значения в столбцах b
и c
равны. Сейчас у меня есть единственное решение для всех в целом с этим кодом:
x = np.array(np.meshgrid(df1.a.values,
df2.a.values)).T.reshape(-1,2)
df = pd.DataFrame(x)
print(df)
0 1
0 1 1
1 1 4
2 1 5
3 4 1
4 4 4
5 4 5
6 7 1
7 7 4
8 7 5
ожидаемый вывод для df1.a and df2.a
только для строк, где df1.b==df2.b and df1.c==df2.c
:
0 1
0 1 1
1 1 4
2 4 1
3 4 4
4 7 5
, поэтому в основном мне нужногруппировать по общим строкам в выбранных столбцах b
и c