Python groupby - 根据其他列中的值创建一个新列

绿洲

我有一个非常大的数据框。
我想先对“id”列进行分组。
然后根据其他现有列创建一个新列“reply_time”。

import pandas as pd
import numpy as np

id = ['793601486525702000','793601486525702000','793601710614802000','793601355214561000','793601355214561000','793601355214561000','793601355214561000','788130215436230000','788130215436230000','788130215436230000','788130215436230000','788130215436230000']
time = ['11/1/2016 16:53','11/1/2016 16:53','11/1/2016 16:52','11/1/2016 16:55','11/1/2016 16:53','11/1/2016 16:53','11/1/2016 16:51','11/1/2016 3:09','11/1/2016 3:04','11/1/2016 2:36','11/1/2016 2:08','11/1/2016 0:28']
reply = ['3','3','0','3','3','2','1','3','2','3','3','1']

df = pd.DataFrame({"id": id, "time": time, "reply": reply})

        id                 time       reply 
793601486525702000  11/1/2016 16:53     3       
793601486525702000  11/1/2016 16:53     3       
793601710614802000  11/1/2016 16:52     0       
793601355214561000  11/1/2016 16:55     3       
793601355214561000  11/1/2016 16:53     3       
793601355214561000  11/1/2016 16:53     2       
793601355214561000  11/1/2016 16:51     1   
788130215436230000  11/1/2016 3:09      3       
788130215436230000  11/1/2016 3:04      2       
788130215436230000  11/1/2016 2:36      3       
788130215436230000  11/1/2016 2:08      3       
788130215436230000  11/1/2016 0:28      1   

这个新列“reply_time”中有两种类型的值。

  1. 'time':先分组'id'列,如果reply = '1',则返回reply = '2'的'time'值。
  2. 'na':如果不满足上述条件,则应将剩余的行分配给 'na'。

在这种情况下,我的输出数据帧将是:

        id                 time       reply   reply_time
793601486525702000  11/1/2016 16:53     3        na
793601486525702000  11/1/2016 16:53     3        na
793601710614802000  11/1/2016 16:52     0        na
793601355214561000  11/1/2016 16:55     3        na
793601355214561000  11/1/2016 16:53     3        na
793601355214561000  11/1/2016 16:53     2        na
793601355214561000  11/1/2016 16:51     1    11/1/2016 16:53
788130215436230000  11/1/2016 3:09      3        na
788130215436230000  11/1/2016 3:04      2        na
788130215436230000  11/1/2016 2:36      3        na
788130215436230000  11/1/2016 2:08      3        na
788130215436230000  11/1/2016 0:28      1    11/1/2016 3:04 

我不知道实现这一目标的最佳方法。任何人都可以帮忙吗?

提前致谢!

贝尼

尝试merge切片后replace

yourdf=df.merge(df.query("reply=='2'").replace({'reply':{'2':'1'}}).rename(columns={'time':'reply_time'}),how='left')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python pandas - groupby之后,如何根据其他列中的值创建新列

Python 创建一个新列并根据其他两个列值填充它

Python groupby-根据其他列中的条件更改列值

基于groupby Python的第一个和最后一个值的条件创建一个新列

如何根据python中其他多个列的名称创建一个列?

根据python中列的标签创建groupby

从python中的另一列groupby之后的列中选择一个值

如果其他条件在python中在dataframe中创建一个新列

Python Pandas:根据其他列中的唯一标识符创建具有最小值的新列

根据其他列中的值在python 3(pandas)数据框中创建新列

Python:根据其他两列中的值有条件地创建新列

根据python pandas中其他列的值创建新列

根据从python中其他两个字符串列应用的条件创建一个新列

根据其他两列中的值,用另一个数据中的值填充一个数据框中的新列?(Python /熊猫)

Python Pandas根据另一个列值创建新列

根据另一列的groupby结果创建一个新列

根据数据框中的2列提取信息并创建一个新列-Python

Python Pandas:根据另一个数据框的类别值创建新列

使用groupby键创建另一个列pandas python

Python:Pandas:如何根据Groupby在另一列中查找最大值

Python-根据其他列的条件创建新列

Python中的散点图groupby列

Pandas Dataframe使用Groupby从其他两个列的唯一值创建下一个未来日期的列

创建新列以根据其他列的排名显示值python

Python Dataframe - 根据现有列值的长度创建一个具有值的新列

使用Groupby构造一个具有其他列的值计数的数据框

根据 groupby 值向 Pandas 数据框添加一个新列

根据Python Pandas中的几个查找表创建一个新列

Python Pandas:对列中的值进行分类并创建一个新列