Имам два кадъра за данни, както е показано по-долу.
DF1:
Student_Name,total
X,400
Y,350
D,450
E,420
df2:
Student_Name,jan
X,350
Y,380
A,360
B,370
Y,380
изход:
Student_Name,jan,feb
X,350,400
Y,380,350
A,360,0
B,370,0
Y,380,350
продукцията не трябва да има. на ред от df2 и стойност, взета от df1. ако етикетът df2 ред не е намерен в df1, тогава трябва да има 0. също и ако df2 index колоната има дубликат. например тук Y е два пъти и в двата случая взехме стойност от df1. също продукция не трябва да има ред, който не е в df2, но в df1. тук D и E е в df1, но не и в df2, така че не включете в изходния dataframe.
Отговори:
0 за отговор № 1можеш да използваш pd.merge () метод:
In [38]: pd.merge(df1, df2, on="Student_Name", how="left").fillna(0)
Out[38]:
Student_Name total jan
0 X 400 350.0
1 Y 350 380.0
2 Y 350 380.0
3 D 450 0.0
4 E 420 0.0
или:
In [39]: pd.merge(df1, df2, on="Student_Name", how="right").fillna(0)
Out[39]:
Student_Name total jan
0 X 400.0 350
1 Y 350.0 380
2 Y 350.0 380
3 A 0.0 360
4 B 0.0 370
Ако трябва да се присъедините само към една колона, то може да е по-бързо да се използва .map()
метод:
In [47]: df2["new"] = df2.Student_Name.map(df1.set_index("Student_Name")["total"])
.fillna(0).astype(int)
In [48]: df2
Out[48]:
Student_Name jan new
0 X 350 400
1 Y 380 350
2 A 360 0
3 B 370 0
4 Y 380 350