如何在合并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)