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
- 左边的数据框一起填充了整数/列表
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