gpt4 book ai didi

python - 我在将我的逻辑应用于 python 代码时遇到问题

转载 作者:行者123 更新时间:2023-12-04 07:51:37 24 4
gpt4 key购买 nike

我是 Pandas 的新手,我不知道如何将以下逻辑应用到 Pandas 代码中。我能得到的所有帮助将不胜感激!
例如,在我的数据框中,我有以下内容:

id    uid  action program     time         sleepTimes
1628 100 5 200 2020-05-20 2020-05-20
1629 100 1 200 2020-05-21 0

我想要专栏 sleepTimes id 1629 的列具有相同的值 sleepTimes id 1628,因为它们具有相同的 uid 和程序。我想将此应用于验证相同条件的所有行。
对于一般观点,我想添加到专栏 sleepTimesaction = 1sleepTimes 的值的 action = 5actions = 1具有相同的值 uidprogramaction = 5 .我怎么能做到这一点,使用python?
观察:我的数据框是使用 Pandas 创建的。
谢谢!
编辑:这是我开始的代码。
df['sleepTimes'] = np.where(df['action'] == 5, df['time'], 0)
uid = df.loc[df['action'] == 5, 'uid']

def mapping_time (df):
if (df['action'] == 1).all():
#compare and check if uid and program are equal to action 1 and action 5.
if df['uid'] == df['sleepTimes'] & df['program']:
df['sleepTimes'] = df.loc[df['action'] == 5, 'time']
elif (df['action'] == 3).all():
if(df['uid'] == uid):
df['sleepTimes'] = sleepTimes
else:
#it is action = 5
df['sleepTimes'] = df['time']

最佳答案

只需利用 astype()replace()方法:

df['sleepTimes']=df['sleepTimes'].astype(str).replace('0',np.NaN)
最后利用 groupby()方法和 ffill()方法:
df['sleepTimes']=df.groupby('uid')['sleepTimes'].ffill()
现在,如果您打印 df你会得到你想要的输出
#output

id uid action program time sleepTimes
0 1628 100 5 200 2020-05-20 2020-05-20
1 1629 100 1 200 2020-05-21 2020-05-20
现在,如果您想对 'sleepTimes' 执行一些操作,请将其转换为 datetime[ns]通过使用 pd.to_datetime()方法:
df['sleepTimes']=pd.to_datetime(df['sleepTimes'])
编辑:
df['sleepTimes']=df.groupby(['uid','program'])['sleepTimes'].ffill()

关于python - 我在将我的逻辑应用于 python 代码时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66942099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com