大熊猫合并返回NaN?(Pandas Merge returning NaN?)
我有2个数据框:
DF1 =
State Code Alabama AL Alaska AK American Samoa AS Arizona AZ Arkansas AR
DF2 =
State PREVAILING_WAGE CALIFORNIA 102170.0 DELAWARE 97531.0 SOUTH CAROLINA 96824.0 WASHINGTON 89586.0 OREGON 88234.0
现在当我尝试合并时,如果他们使用:
df1.merge(df2,left_on='State',right_on='State',how='left')
我在合并表中获得NaN值,如下所示:
State PREVAILING_WAGE Code CALIFORNIA 102170.0 NaN DELAWARE 97531.0 NaN SOUTH CAROLINA 96824.0 NaN WASHINGTON 89586.0 NaN OREGON 88234.0 NaN
我也检查了dtypes,并且它们都是对象或str。 我该如何解决这个问题?
谢谢
编辑 :dataframes包含所有的状态名称,所以他们有共同的东西来匹配。
I have 2 dataframes:
df1=
State Code Alabama AL Alaska AK American Samoa AS Arizona AZ Arkansas AR
df2=
State PREVAILING_WAGE CALIFORNIA 102170.0 DELAWARE 97531.0 SOUTH CAROLINA 96824.0 WASHINGTON 89586.0 OREGON 88234.0
Now when I try to merge both if them using:
df1.merge(df2,left_on='State',right_on='State',how='left')
I get NaN values in the merged table like this:
State PREVAILING_WAGE Code CALIFORNIA 102170.0 NaN DELAWARE 97531.0 NaN SOUTH CAROLINA 96824.0 NaN WASHINGTON 89586.0 NaN OREGON 88234.0 NaN
I checked the dtypes too, and both of them are objects or str. How do I solve this?
Thanks
EDIT: The dataframes contain all states names, so they have common stuff to match.
原文:https://stackoverflow.com/questions/49324970
最满意答案
至少一些问题 - 以及你在底部遇到的令人费解的差异的解释 - 是你之后添加的
WarCraft.fighter
成为一个可观察的,映射插件没有做到。所以你可以交换这个:
var WarCraft = function (data) { var self = this; self.fighter = ko.observable(data.fighter); };
为了这
var WarCraft = function (data) { var self = this; self.fighter = data.fighter; };
并且您应该能够以相同的方式访问映射数据和添加数据:
myViewModel.WW2Machines()[0].fighter.Name()
At least some of the problem—and the explanation for the puzzling difference you're running into at the bottom—is that the rows you're adding later make
WarCraft.fighter
an observable, which the mapping plugin is not doing.So you could exchange this:
var WarCraft = function (data) { var self = this; self.fighter = ko.observable(data.fighter); };
for this
var WarCraft = function (data) { var self = this; self.fighter = data.fighter; };
and you should be able to access both the mapped data and added data the same way:
myViewModel.WW2Machines()[0].fighter.Name()
相关问答
更多-
您没有在模块声明中正确包含映射插件,因为您缺少映射插件的参数。 所以它在templateMarkup参数中传递了映射插件本身,当KO在template: templateMarkup找到它时会抱怨template: templateMarkup 。 要修复此问题,您需要在templateMarkup之前添加一个参数,该参数将保存映射插件 define(['knockout', 'knockout-mapping', 'text!./album-details.html'], function (k ...
-
我的建议对于另一个问题我刚才在https://stackoverflow.com/questions/7499133/mapping-deeply-hierarchical-objects-to-custom-classes-using-knockout-mapping-plug回答。 您使用映射插件的推理是合理的,我使用的。 为什么要输入更多的代码? 根据我在淘汰赛(4个月)中的经验,我发现我手动做的越少,让淘汰赛程序做的事情越好,我的应用程序似乎运行越好。 我的建议是尝试最简单的方法。 如果不符合您的需 ...
-
这是因为视图是在填充observableArray之前呈现的,所以当时这些字段不存在。 您必须检查绑定,例如: It's because the view is being rendered before you've populated the observableArray, so at th ...
-
至少一些问题 - 以及你在底部遇到的令人费解的差异的解释 - 是你之后添加的WarCraft.fighter成为一个可观察的,映射插件没有做到。 所以你可以交换这个: var WarCraft = function (data) { var self = this; self.fighter = ko.observable(data.fighter); }; 为了这 var WarCraft = function (data) { var self = this; self ...
-
我找到了我需要做的事情。 您可以传递一个包含“map”和“unmap”属性的对象,而不是为每个“扩展”规则定义一个函数,以定义所需的额外映射和取消映射(但仍然使用其他所有内容的默认映射)。 在此取消映射期间,您可以手动删除额外属性,以便在调用ko.viewmodel.toModel时不会显示该属性。 所以在我的例子中我需要使用: var viewmodel = ko.viewmodel.fromModel(model, { extend: { "{root}": { ...
-
Knockout ViewModel更新(Knockout ViewModel Update)[2023-01-02]
不确定如果我理解你的问题,但如果你想改变课外的模型值,你需要做这样的事情: $(document).ready(function () { var viewModel = new LoanDeductions(@Html.Raw(Model.CRefLoansDeductions2.ToJson())); ko.applyBindings(viewModel); $('.datepicker').datepicke ... -
在VM中调用ko.validation.group以对VM级别的所有可验证可观察对象进行分组。 只有当没有子观察者有错误时, isValid才会成立。 关于ko.validation.group的其他一些SO答案 如何使用ko.validation.group函数 Knockout Validation ko.validation.group vs ko.validatedObservable Call ko.validation.group in your VM to group all the vali ...
-
担心这是一个错误,我不应该使用stringifyJson。 如果我使用以下任一项,我发现我得到了预期的结果,包括通过UI进行的所有更改。 var result = ko.mapping.toJS(this); console.log(result ); var jsonResult = ko.mapping.toJSON(this); console.log(jsonResult); Afraid this was a mistake, I shouldn't have used stringifyJs ...
-
我最终做的是在我的viewmodel中创建一个observable,在批量更新完成后给出了一个值。 我还定义了一个在那一刻执行相关代码的手动订阅: viewmodel.finishedBatchUpdate : ko.observable(); ... ko.mapping.fromJS(json, viewmodel); viewmodel.finishedBatchUpdate.notifySubscribers(true); ... viewModel.finishedBatchUpdate.su ...
-
使用Knockout映射插件正确映射数组元素(Correctly mapping array element using the Knockout mapping plugin)[2022-01-28]
我最终使用ko.toJS而不是ko.mapping.toJS 。 ko.toJS不关心__ko_mapping__ ,并映射所有内容(包括__ko_mapping__ )。 这意味着它的映射比我需要的多一点,但除此之外它工作得很好。 I ended up using ko.toJS instead of ko.mapping.toJS. ko.toJS does not care about __ko_mapping__, and maps everything (including __ko_mappin ...