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

2024-09-30 20:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据是由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,仍然会获得每行的唯一填充值。你知道吗

更多内容:我之所以需要做这个乘法运算,是因为我想按地区聚合数据,例如,将美国和加拿大合并到北美。然而,因为我的数据是利率,我不能简单地相加-我必须乘以人口,把他们变成计数。你知道吗


Tags: 数据datacolumn国家popcountryregion比率
1条回答
网友
1楼 · 发布于 2024-09-30 20:32:05

我可能会这样做

>>> 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-ing每一列。你知道吗

相关问题 更多 >