Python 读取数据帧,当数据帧为零时,在另一个数据帧中查找相同的列名和行名并填充
你好,我有两个大熊猫数据帧,df和df1 df是这样的东西,它有值或0Python 读取数据帧,当数据帧为零时,在另一个数据帧中查找相同的列名和行名并填充,python,pandas,dataframe,Python,Pandas,Dataframe,你好,我有两个大熊猫数据帧,df和df1 df是这样的东西,它有值或0 df: Amazon Apple Blackberry Yahoo Google 1/1/2000 0 13 0 42 0 1/1/2001 0 41 0 53 0 1/1/2002 34 42 0 64 0 1
df:
Amazon Apple Blackberry Yahoo Google
1/1/2000 0 13 0 42 0
1/1/2001 0 41 0 53 0
1/1/2002 34 42 0 64 0
1/1/2003 45 63 0 74 0
1/1/2004 43 74 24 75 0
1/1/2005 0 89 25 86 25
现在我有了df1,它也有一些共同的列名和行索引。例如:
df1:
Amazon Apple Blackberry Yahoo Google
1/1/2000 0 0 0 53 53
1/1/2001 24 0 53 53 42
1/1/2002 42 31 53 53 74
1/1/2003 52 43 53 0 89
1/1/2004 52 53 0 0 99
1/1/2005 24 53 0 0 100
现在我想使用df,并维护df中的所有值。然而,当df中有一个0时,我想查找df1,并在列名称和索引日期相同的情况下将df1的值填充到df中
Eg输出如下所示:
dfoutput
Amazon Apple Blackberry Yahoo Google
1/1/2000 0 13 0 42 53
1/1/2001 24 41 53 53 42
1/1/2002 34 42 53 64 74
1/1/2003 45 63 53 74 89
1/1/2004 43 74 24 75 99
1/1/2005 24 89 25 86 25
如果df1中的df不匹配,则df中的值保持为0。实际上,df和df1在较大的数据集中确实略有不同
谢谢。您可以使用或()替换0
到NaN
:
df2 = df.replace(0,np.nan).combine_first(df1.replace(0,np.nan))
#alternatively
#df2 = df.replace(0,np.nan).fillna(df1.replace(0,np.nan))
print (df2)
Amazon Apple Blackberry Yahoo Google
1/1/2000 NaN 13 NaN 42 53.0
1/1/2001 24.0 41 53.0 53 42.0
1/1/2002 34.0 42 53.0 64 74.0
1/1/2003 45.0 63 53.0 74 89.0
1/1/2004 43.0 74 24.0 75 99.0
1/1/2005 24.0 89 25.0 86 25.0
最后将
NaN
替换为0
并转换为int
:
df2 = df2.fillna(0).astype(int)
print (df2)
Amazon Apple Blackberry Yahoo Google
1/1/2000 0 13 0 42 53
1/1/2001 24 41 53 53 42
1/1/2002 34 42 53 64 74
1/1/2003 45 63 53 74 89
1/1/2004 43 74 24 75 99
1/1/2005 24 89 25 86 25
df2 = df2.fillna(0).astype(int)
print (df2)
Amazon Apple Blackberry Yahoo Google
1/1/2000 0 13 0 42 53
1/1/2001 24 41 53 53 42
1/1/2002 34 42 53 64 74
1/1/2003 45 63 53 74 89
1/1/2004 43 74 24 75 99
1/1/2005 24 89 25 86 25