Pandas合并使用空值填充新的数据帧

2024-07-01 06:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试合并两个数据帧:

  • 第一个数据帧control,用整数/字符串填充
  • 左边的数据帧一起被整数/列表填充。在

当我使用pandasmerge()函数时,新的dataframe用NaN填充右边的dataframe,而不是列表

final_dataset = pd.merge(control, together, on="zip_code", how="left")

我希望有一个新的合并数据帧,其中包含两个原始数据帧的值。相反,在新的dataframe中,“control”数据框中的所有值都是正确的,但是“together”数据框中的所有列表都是NaN

以下是一些示例数据:

^{pr2}$

以下是最终数据集的外观:

final_dataset
-----------------------------------------------------------
zip_code             payment                 age                  
47283                  Mortgage               NaN                 
25769                  Rent                   NaN                                

Tags: 数据函数字符串dataframe列表code整数nan
2条回答

我想你这里有些事。当你说左数据帧时,我假设你的意思是它应该是左连接右连接?你不是说“在一起”在样本的左边?在

我认为可以安全地假设“together”中的邮政编码是字符串而不是int。您得到的是NaN,因为它们在2个数据帧中不匹配,例如47283不等于“47283”。在

另外,如果是一个左连接,你想一起在左边,你应该有1个NaN付款,因为你只有2个邮政编码匹配,如果他们是相同的数据类型。在

如果你想在左边控制,我建议你这样做(我想你会这样做):

control = pd.DataFrame({
    'payment':['Rent','Mortgage','Rent'],
    'zip_code':[94053,47283,25769]
})
together = pd.DataFrame({
    'age':[[25,64,24],[78, 39,35],[82,33,19]],
    'zip_code':[12583,47283,25769]
})

control.merge(together,on='zip_code',how='left')

这将得到以下结果:

^{pr2}$

如您所见,您的年龄为1NaN,因为94053不在“together”数据帧中。在

如果每个数据帧的邮政编码列具有不同的类型,可能是其中一个是int64,另一个是object和for例如:

 a = pd.DataFrame([
    {"colA": 1, "key": "1"},
    {"colA": 2, "key": "2"},
    {"colA": 3, "key": "3"}
])

b = pd.DataFrame([
    {"colB": [25, 64, 24], "key": 1},
    {"colB": [25, 64, 24], "key": 2},
    {"colB": [25, 64, 24], "key": 4}
])

如果你合并这两个数据帧,你会得到

^{pr2}$

因此,您需要确保两个数据帧中的邮政编码具有相同的类型。在

相关问题 更多 >

    热门问题