Имам три различни информационни рамки, които искам да се присъединят, като използвам етикет и прозорец като ключове.
DataFrame1
Window Label FeatA
123 1 h
123 2 f
DataFrame2
Window Label FeatB
123 1 d
123 2 s
DataFrame3
Window Label FeatC
123 1 d
123 2 c
резултат
Window Label FeatA FeatB FeatC
123 1 h d d
123 2 f s c
Знам как да се присъединявам към данните pandas.concat
но не знаят как да определят ключовете.Всяка помощ ще бъде много оценявана.
Отговори:
2 за отговор № 1Един чист панди отговор използва pd.concat
pd.concat([df.set_index(["Window", "Label"]) for df in [df1_, df2_, df3_]],
axis=1).reset_index()
3 за отговор № 2
Трябва да използвате merge
функция за свързване на таблици, за вашия случай, тъй като имате няколко рамки за данни, които да се присъединят, можете да ги поставите в списък и след това да използвате reduce
от functools
да ги обедини един по един:
import pandas as pd
from functools import reduce
reduce(lambda x, y: pd.merge(x, y, on = ["Window", "Label"]), [df1, df2, df3])
# Window Label FeatA FeatB FeatC
# 0 123 1 h d d
# 1 123 2 f s c
1 за отговор № 3
можеш да използваш combine_first:
In[44]:df.combine_first(df1).combine_first(df2)[["Window","Label","FeatA","FeatB","FeatC"]]
Out[44]:
Window Label FeatA FeatB FeatC
0 123 1 h d d
1 123 2 f s c
или можете да използвате сливам:
In[30]:df.merge(df1,on=["Window","Label"]).merge(df2,on=["Window","Label"])
Out[30]:
Window Label FeatA FeatB FeatC
0 123 1 h d d
1 123 2 f s c