【发布时间】:2021-04-18 16:53:22
【问题描述】:
我有以下数据框、groupby 对象和函数。
df = pd.DataFrame({
'A': 'a a b b b'.split(),
'P': 'p p p q q'.split(),
'B': [1, 2, 3, 4, 5],
'C': [4, 6, 5, 7, 8],
'D': [9, 10, 11, 12, 13]})
g1 = df.groupby('A')
g2 = df.groupby('P')
def f1(x, y):
return sum(x) + sum(y)
def f2(x, y):
return sum(x) - sum(y)
def f3(x, y):
return x * y
对于g1,我想
- 将 f1 应用于 B 列和 C 列
- 将 f2 应用于 C 和 D 列。
对于g2,我想
- 将 f2 应用于 B 列和 C 列
- 将 f3 应用于 C 和 D 列
对我来说,困难在于函数,它们在多个列上运行。我还需要这些函数适用于任意一组列;注意 f2 如何用于 ['B', 'C'] 和 ['C', 'D']。我正在为处理这个问题的语法而苦苦挣扎。
如何使用 Pandas 在 Python 中完成所有这些事情?
【问题讨论】:
-
你能分享你的预期输出吗?
-
这是一个很好的例子,说明如何提供有用的测试数据。人们经常做诸如“这是从我的硬盘驱动器加载 CSV 的一些代码”之类的事情,而试图回答问题的人无法测试他们提出的代码。
-
@AmitVikramSingh 不,它没有。我的功能涉及任何 2 个可能的列之间的操作。该线程使用的函数一次只涉及一列。
-
@Iterator516 如果您在@TedPetrou 的答案中搜索部分
Using apply and returning a Series,他正在使用多个列。
标签: python pandas function group-by pandas-groupby