Python Pandas-df.loc用于基于不同df替换列时指定NaN
我试图根据另一列通过一个键映射的值来分配某些列的值。问题是我认为映射没有被正确使用,因为它将NaN赋值给列 我应该用“SampleID”来映射它们 这是我要为其赋值的DFPython Pandas-df.loc用于基于不同df替换列时指定NaN,python,pandas,Python,Pandas,我试图根据另一列通过一个键映射的值来分配某些列的值。问题是我认为映射没有被正确使用,因为它将NaN赋值给列 我应该用“SampleID”来映射它们 这是我要为其赋值的DF >>> df.ix[new_df['SampleID'].isin(pooled['SampleID']), cols] Volume_Received Quantity massug 88280 2.0 15.0 1.0 88282
>>> df.ix[new_df['SampleID'].isin(pooled['SampleID']), cols]
Volume_Received Quantity massug
88280 2.0 15.0 1.0
88282 3.0 55.0 5.0
88284 2.5 46.2 3.0
88286 2.0 98.0 5.0
229365 2.0 8.4 3.0
229366 3.0 15.9 3.0
229367 1.5 7.7 2.0
233666 1.5 50.8 3.0
233667 4.0 60.2 5.0
这是我对他们的新价值观
>>> numerical
Volume_Received Quantity massug
SampleID
sample8 10.0 75.0 5.0
sample70 15.0 275.0 25.0
sample72 12.5 231.0 15.0
sample89 6.0 294.0 15.0
sample90 4.0 16.8 6.0
sample96 6.0 31.8 6.0
sample97 3.0 15.4 4.0
sample99 3.0 101.6 6.0
sample100 8.0 120.4 10.0
我正在使用此命令分配值:
df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols]
其中pooled基本上是pooled=df[df['type']=='pooled']
,而cols
是一个包含上述三列的列表。运行上面的代码后,我收到所有值中的NaN。我想我是告诉pandas在它不存在的地方获取值,因为映射,它返回一些null值,这些值被转换为NaN(假设) 索引不匹配
你可以用
df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols].values
只有当尺寸完全相同时 索引是不一样的,我猜这就是它不起作用的原因。试试数字[cols].valuesYeah,我也是这么想的,但我不知道如何正确地映射它。史蒂文,关于
.values
属性,你也是对的。你介意把它贴出来回答我吗?非常感谢你!