【发布时间】:2018-06-21 02:50:18
【问题描述】:
我一直在尝试在 groupby 之后将 lambda 函数应用于数据帧中的列,但函数中有一个特定于每个组的条件。请参阅以下内容:
df.groupby('column_1')['column_2'].apply(lambda x: a if x == df.groupby('column_1')['column_3'] else x)
目的是将dataframe按column_1分组,根据column_3中对应的值改变column_2的值在同一组内。
这是我得到的错误:“无效类型比较”
顺便提一下,column_2 和column_3 都是整数。
我还设置了一个值而不是系列的条件。因为每组内column_3的值都是一样的,所以我尝试在条件中添加“.first()”:
df.groupby('column_1')['column_2'].apply(lambda x: a if x == df.groupby('column_1')['column_3'].first() else x)
这是我得到的错误:“只能比较标签相同的系列对象”
关于如何解决这个问题或替代实现的任何想法?
非常感谢!
Sample data:
column_1 column_2 column_3
0 0 2
0 1 2
0 2 2
0 3 2
1 0 0
1 1 0
1 2 0
1 3 0
Expected output:
column_1 column_2 column_3
0 0 2
0 1 2
0 a 2
0 3 2
1 a 0
1 1 0
1 2 0
1 3 0
【问题讨论】:
-
请提供示例数据和预期输出。
-
我不明白这不只是像 { df['column_2'] = np.where(df['column_2'] == df['column_3' ],'a',df['column_2']) }。分组背后的原因是什么?
-
是的,你是对的。看来我已经迷上了groupby。我从另一个需要分组的问题中解决了这个问题。我们现在干什么?我应该删除问题吗?或者这仍然是一个值得思考的合理问题吗?
标签: python python-3.x pandas lambda pandas-groupby