如何在合并python中的两个数据帧之前输入值以避免数据丢失

如何在合并python中的两个数据帧之前输入值以避免数据丢失,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧,df1和df2,如下所示: df1 name posteam down rush 0 A.Ekeler LAC 1.0 35.7 1 A.Ekeler LAC 2.0 15.1 2 A.Ekeler LAC 3.0 15.9 3 A.Ekeler LAC 4.0 0.4 4 A.Jones GB 1.0 105.1 5

我有两个数据帧,
df1
df2
,如下所示:

df1

      name  posteam   down      rush
0   A.Ekeler    LAC   1.0       35.7
1   A.Ekeler    LAC   2.0       15.1
2   A.Ekeler    LAC   3.0       15.9
3   A.Ekeler    LAC   4.0       0.4
4   A.Jones     GB    1.0       105.1
5   A.Jones     GB    2.0       79.2
6   A.Jones     GB    3.0       8.1
7   A.Jones     GB    4.0       1.0
我想将它们合并到
name
posteam
down
行中。但是,
name
下的一些值在
df1
中有
down==4
的数据,但在
df2
中没有(看看A.Jones。一个df有
down==4
数据,另一个没有)。当我合并时,由于我正在与
down
合并,因此
down==4
上的值消失,如下所示:

merged = pd.merge(df1,df2,on=['name','posteam','down'])

    name       posteam  down    rush    passes
0   A.Ekeler    LAC     1.0     35.7    122.8
1   A.Ekeler    LAC     2.0     15.1    63.2
2   A.Ekeler    LAC     3.0     15.9    39.0
3   A.Ekeler    LAC     4.0     0.4     -1.0
4   A.Jones     GB      1.0     105.1   43.7
5   A.Jones     GB      2.0     79.2    52.0
6   A.Jones     GB      3.0     8.1     10.4
玩家A.Jones在
df1
中有
down==4
的数据,但在
df2
中没有。我如何为一个dfs中没有数据的玩家输入
0
,以便在我合并时它们不会消失?如下所示(参见索引7):

因此,当我合并时,我将从
df1
获取保持
向下==4
数据,如下所示(查看索引7):

我试着把
从合并中删除,但那把一切都搞砸了

你应该试试这个

merged_df = pd.merge(df1, df2, 
                    how='outer', 
                    on=['name', 'posteam', 'down']).fillna(value=0.0)
df2

    name      posteam   down    passes
0   A.Ekeler    LAC     1.0     122.8
1   A.Ekeler    LAC     2.0     63.2
2   A.Ekeler    LAC     3.0     39.0
3   A.Ekeler    LAC     4.0     -1.0
4   A.Jones     GB      1.0     43.7
5   A.Jones     GB      2.0     52.0
6   A.Jones     GB      3.0     10.4
7   A.Jones     GB      4.0     0.0
merged = pd.merge(df1,df2,on=['name','posteam,'down])

    name       posteam  down    rush    passes
0   A.Ekeler    LAC     1.0     35.7    122.8
1   A.Ekeler    LAC     2.0     15.1    63.2
2   A.Ekeler    LAC     3.0     15.9    39.0
3   A.Ekeler    LAC     4.0     0.4     -1.0
4   A.Jones     GB      1.0     105.1   43.7
5   A.Jones     GB      2.0     79.2    52.0
6   A.Jones     GB      3.0     8.1     10.4
7   A.Jones     GB      4.0     1.0     0.0
merged_df = pd.merge(df1, df2, 
                    how='outer', 
                    on=['name', 'posteam', 'down']).fillna(value=0.0)