【发布时间】:2020-11-12 00:09:31
【问题描述】:
考虑到我已经找到了解决问题的方法,但我想找到更好的方法和/或更多地了解熊猫数据框和应用/lambda 函数。 我有一个像这样的熊猫数据框:
A
0 [43,45,51,...,32]
1 [43,45,51,...,32]
2 [43,45,51,...,32]
... ...
... ...
... ...
n [43,45,51,...,32]
A 列每行包含 64 个元素。 我想要的是对每一行应用一个函数:
- 仅对 A 列的某些元素求和(比如索引 18、27、34、45)
- 求总和的平均值
- 将平均值放入名为 B 的新列中
所以,最后我应该有这样的东西:
A B (mean over few elements)
0 [43,45,51,...,32] 50
1 [42,55,41,...,68] 60
2 [11,30,29,...,23] 30
... ... ...
... ... ...
... ... ...
n [33,45,84,...,77] 70
现在我可以使用一个 numpy 数组来做到这一点,我在其中存储了 A 列,如下所示:
a = np.array(df["A"])
k =[18,27,34,45]
for i in range(n):
vector = 0
for idx, val in enumerate(k):
vector = vector + a[i][val]
mean.append(vector/16)
但我正在考虑使用 apply/lamdba 方法的更优雅的方法。如果不是创建另一列,而是将值附加到一个 numpy 列表,那也可以。 提前谢谢你和欢呼。
【问题讨论】:
标签: python pandas dataframe lambda apply