我正在尝试根据另一列将一些列映射为一个单独的键来分配某些列的值。问题是我认为映射没有被正确使用,因为它正在为列分配NaN。
我应该通过'SampleID'映射它们。
这是我想要赋值给
的DF>>> 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 = df[df['type'] == 'Pooled']
,而cols
是一个列表,上面显示了三列。运行上面的代码后,我在所有值中收到NaN。我想我正在告诉pandas因为映射而得到不存在的值,并且它返回了一些null,它被转换为NaN(假设)。
答案 0 :(得分:1)
索引不匹配,
你可以使用
df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols].values
只有尺寸完全相同!