Python 使用示例,将函数应用于大型列子集
我的数据由1000个样本组成,这些样本来自一个数据框中存储的几个不同国家的费率分布: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
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