Python 3.x 数据帧:根据字段的匹配列表将字段值从一个数据帧复制到另一个数据帧
我有两个数据帧:2000行的小数据帧和100多万行的大数据帧Python 3.x 数据帧:根据字段的匹配列表将字段值从一个数据帧复制到另一个数据帧,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有两个数据帧:2000行的小数据帧和100多万行的大数据帧 Small_dataframe has the following fields. The object_type field contains values of interest: object_type, feature_1, feature_2, feature_3 .... feature_100. 如果Small_dataframe中的字段子集与big_dataframe中的相同子集匹配,我需要将Small_dat
Small_dataframe has the following fields. The object_type field contains values of interest:
object_type, feature_1, feature_2, feature_3 .... feature_100.
如果Small_dataframe中的字段子集与big_dataframe中的相同子集匹配,我需要将Small_dataframe的每一行中的object_type复制到big_dataframe,如下所示
big_dataframe has the same fields (but object_type field in big_dataframe is initially empty):
object_type, feature_1, feature_2, feature_3 .... feature_100
操作示例:
查看small_数据框中的第0行,我发现在这个特定的第0行中,3个features列不是None或empty,所有其他feature fields列都不是None或empty。然后我会检查big_dataframe中是否有行,其中相同的3个features列等于small_dataframe 3个features列,而所有其他feature字段均为无或空。如果是这样,则将大数据框['object\u type']=小数据框['object\u type']
查看small_数据框中的第1行,我发现在这个特定的第1行中,8个features列不是None或empty,其他features fields列不是None或empty。然后,我会检查big_dataframe中是否有行,其中相同的8个特征等于small_dataframe 8个特征列,而所有其他特征字段列均为无或空。如果是这样,则将大数据框['object\u type']=小数据框['object\u type']
.
. and so on
.
查看small_dataframe中的第300行,我发现在这一特定的第1行中,17个features列不是None或empty,其他feature字段不是None或empty。然后,我会检查big_dataframe中是否有行,其中相同的17个特征等于small_dataframe 17特征,而所有其他特征字段均为无或空。如果是这样,则将大数据框['object\u type']=小数据框['object\u type']
我希望这样做的同时最大限度地利用内置函数,以避免在一个或两个帧上出现错误。请注意,如上所述,匹配的列数从一行更改为下一行。如果您能给我一些反馈意见,我将不胜感激 请给出一个具有预期结果的数据帧示例。请看一下如何创建。太棒了。。。。这正是我要找的。我对这一行有点困惑。df1.iloc[:,1:::==df2.iloc[:,1:]例如,这是如何成为一对真-假或真-假的。我希望能为我提供一个很好的参考,在这里讨论这一点。令人困惑的是,我本以为是真是假,而不是一对真是假。不过,你又救了我一天。很多很多感谢都不介意。。。这是一对,因为我们有两个字段。。。。嗯。。。。很抱歉搞混了。。。。再次感谢
df1 = pd.DataFrame({'object_type':[0,1,2,3,4,5,6,7],'f1':[None,None,None,2,3,4,5,2],'f2':[None,1,2,None,None,3,4,5]})
df2 = pd.DataFrame({'object_type':[None,None,None,None,None,None,None,None],'f1':[None,None,None,2,3,4,5,2],'f2':[None,0,2,None,None,3,4,5]})
#object_type is at the zeroth location
df1.iloc[:,1:] == df2.iloc[:,1:]
equality_test = df1.iloc[:,1:] == df2.iloc[:,1:]
df2 = df2.mask(equality_test.all(axis=1), other=df1)
print(df2)