Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-df.loc用于基于不同df替换列时指定NaN_Python_Pandas - Fatal编程技术网

Python Pandas-df.loc用于基于不同df替换列时指定NaN

Python 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

我试图根据另一列通过一个键映射的值来分配某些列的值。问题是我认为映射没有被正确使用,因为它将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基本上是
pooled=df[df['type']=='pooled']
,而
cols
是一个包含上述三列的列表。运行上面的代码后,我收到所有值中的NaN。我想我是告诉pandas在它不存在的地方获取值,因为映射,它返回一些null值,这些值被转换为NaN(假设)

索引不匹配

你可以用

df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols].values

只有当尺寸完全相同时

索引是不一样的,我猜这就是它不起作用的原因。试试数字[cols].valuesYeah,我也是这么想的,但我不知道如何正确地映射它。史蒂文,关于
.values
属性,你也是对的。你介意把它贴出来回答我吗?非常感谢你!