Python 使用空值填充新数据帧

Python 使用空值填充新数据帧,python,pandas,dataframe,merge,null,Python,Pandas,Dataframe,Merge,Null,我正在尝试合并两个数据帧: 第一个数据帧,control,由整数/字符串填充 左边的数据框一起填充了整数/列表 当我使用pandasmerge()函数时,新的数据框会用NaN而不是列表填充右侧的数据框 final_dataset = pd.merge(control, together, on="zip_code", how="left") 我期望使用两个原始数据帧中的值创建一个新的合并数据帧。相反,在新的数据框中,“control”数据框中的所有值都是正确的,但“together”数据框

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

  • 第一个数据帧,
    control
    ,由整数/字符串填充
  • 左边的数据框一起填充了整数/列表
当我使用pandas
merge()
函数时,新的数据框会用NaN而不是列表填充右侧的数据框

final_dataset = pd.merge(control, together, on="zip_code", how="left")
我期望使用两个原始数据帧中的值创建一个新的合并数据帧。相反,在新的数据框中,“control”数据框中的所有值都是正确的,但“together”数据框中的所有列表都是正确的

以下是一些示例数据:

control                                       together
-------------------------------              -------------------------------
payment             zip_code                   age                  zip_code
   Rent                 94053                    [25, 64, 24]         12583
   Mortgage             47283                    [78. 39, 35]         47283
   Rent                 25769                    [82, 33, 19]         25769
以下是最终数据集的外观:

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

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

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

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

如果您想控制左侧,我建议您这样做(我想您是这样做的):

control=pd.DataFrame({
‘付款’:[‘租金’、‘抵押’、‘租金’],
“邮政编码”:[940534728325769]
})
一起=pd.DataFrame({
‘年龄’:[25,64,24],[78,39,35],[82,33,19],
“邮政编码”:[125834728325769]
})
控件。合并(在class='zip\u code',how='left'上合并)
这将为您提供以下结果:

    payment  zip_code           age
0      Rent     94053           NaN
1  Mortgage     47283  [78, 39, 35]
2      Rent     25769  [82, 33, 19]

正如您所看到的,由于94053不在“一起”数据框中,您有1个NaN。如果每个数据框的邮政编码列具有不同的类型,则可能会发生这种情况,其中一个是int64,另一个是object,例如:

 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}
])
如果您合并这两个数据帧,您将得到

res = pd.merge(a, b, on="key", how='left')



   colA key colB
0   1   1   NaN
1   2   2   NaN
2   3   3   NaN

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

请提供一些示例数据。当您执行内部联接时,
how='inner'
您得到了什么值?可能是ID不匹配。@iuvbio添加了一些示例code@minanmafi您应该使用
pd.merge(control,together,on=“zip\u code”,how=“inner”)
检查是否得到任何结果,并将其添加到问题中。如果没有,则您的
zip\u code
值实际上不相同。请同时提供
control.zip\u code.dtype
的输出。zip\u code.dtype