Моя цель здесь - объединить () чередующиеся группы между двумя кадрами данных.
желаемый результат:
group ordercode quantity
0 A 1
B 1
C 1
D 1
0 A 1
B 3
1 A 1
B 2
C 1
1 A 1
B 1
C 2
Мой кадр данных:
import pandas as pd
df1=pd.DataFrame([[0,"A",1],[0,"B",1],[0,"C",1],[0,"D",1],[1,"A",1],[1,"B",2],[1,"C",1]],columns=["group","ordercode","quantity"])
df2=pd.DataFrame([[0,"A",1],[0,"B",3],[1,"A",1],[1,"B",1],[1,"C",2]],columns=["group","ordercode","quantity"])
print(df1)
print(df2)
Я использовалdfff=pd.concat([df1,df2]).sort_index(kind="merge")
но я получил следующий результат:
group ordercode quantity
0 0 A 1
0 0 A 1
1 B 1
1 B 3
2 C 1
3 D 1
4 1 A 1
4 1 A 1
5 B 2
5 B 1
6 C 1
6 C 2
Здесь вы можете видеть, что объединение формируется между каждой строкой, а не группой.Он должен печатать как
group 0 of df1
group0 of df2
group1 of df1
group1 of df2
и so on
Примечание. Я создал эти DataFrame с использованием функции groupby()
df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()),
columns=['ordercode'])
df['quantity'] = 1
df['group'] = sorted(list(range(0, len(df)//3, 1)) * 4)[0:len(df)]
df=df.groupby(['group', 'ordercode']).sum()
Вопрос:
Где я ошибся?Сортировка по index
Я использовал .set_index("group")
, но он тоже не работал.