Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 使用示例,将函数应用于大型列子集_Python_Python 2.7_Pandas - Fatal编程技术网

Python 使用示例,将函数应用于大型列子集

Python 使用示例,将函数应用于大型列子集,python,python-2.7,pandas,Python,Python 2.7,Pandas,我的数据由1000个样本组成,这些样本来自一个数据框中存储的几个不同国家的费率分布: s1 s2 ... s1000 pop region country NA USA 0.25 0.27 0.23 300 CAN 0.16 0.14 0.13 35 LA MEX ... 我需要将每个样本乘以总体。为了实现这一点,我目前有: f

我的数据由1000个样本组成,这些样本来自一个数据框中存储的几个不同国家的费率分布:

                  s1      s2  ...   s1000  pop
region  country
NA      USA       0.25    0.27      0.23   300
        CAN       0.16    0.14      0.13   35
LA      MEX       ...
我需要将每个样本乘以总体。为了实现这一点,我目前有:

for column in data.filter(regex='sample'):
    data[column] = data[column]*data['pop']
虽然这是可行的,但对列进行迭代似乎违背了python和
numpy
的精神。有没有更自然的方式让我看不见?我通常会使用
apply
,但我不知道如何使用
apply
,仍然会得到每行的唯一填充值


更多背景:我之所以需要做这个乘法运算,是因为我想按地区聚合数据,例如,将美国和加拿大合并到北美。然而,因为我的数据是速率,我不能简单地相加——我必须乘以总体,将它们转化为计数

>>> df
                  s1    s2  s1000  pop
region country                        
NaN    USA      0.25  0.27   0.23  300
       CAN      0.16  0.14   0.13   35

[2 rows x 4 columns]
>>> df.iloc[:,:-1] = df.iloc[:, :-1].mul(df["pop"], axis=0)
>>> df
                  s1    s2  s1000  pop
region country                        
NaN    USA      75.0  81.0  69.00  300
       CAN       5.6   4.9   4.55   35

[2 rows x 4 columns]
其中,除了最后一列之外,您可以使用任何其他基于loc的筛选器,而不是
iloc