python读取列相同的行_python – Pandas – 行是否属于具有列值和相同id的行

我是熊猫的新手.我有一个像这样的Pandas数据框:

df = pd.DataFrame(data={‘id’: [1, 1, 1, 2, 2, 2, 2], ‘val1’: [0, 1, 0, 0, 1, 0, 0]})

我想添加一个列val2,它指示一行是否落在另一行具有与其自身相同的id的行中,其中val1 == 1.

结果将是一个数据框,如:

df = pd.DataFrame(data={‘id’: [1, 1, 1, 2, 2, 2, 2], ‘val1’: [0, 1, 0, 0, 1, 0, 0], ‘val2’: [0, 0, 1, 0, 0, 1, 1]})

我的第一个想法是使用apply语句,但这些只是按行进行.从我的循环经验来看,永远不是答案.任何帮助将不胜感激!

最佳答案 让我们尝试在groupby中移动cumsum.

df[‘val2’] = df.groupby(‘id’).val1.apply(

lambda x: x.shift().cumsum()

).ge(1).astype(int)

或者,为了避免lambda,

df[‘val2’] = (

df.groupby(‘id’)

.val1.shift()

.groupby(df.id)

.cumsum()

.ge(1)

.astype(int)

id val1 val2

0 1 0 0

1 1 1 0

2 1 0 1

3 2 0 0

4 2 1 0

5 2 0 1

6 2 0 1

Original: https://blog.csdn.net/weixin_27012835/article/details/112961291
Author: 写剧本的
Title: python读取列相同的行_python – Pandas – 行是否属于具有列值和相同id的行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678649/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球