gpt4 book ai didi

python - Pandas 按群体检查 future 状况

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:03 29 4
gpt4 key购买 nike

我试图根据数据中的 future 日期是否会发生条件来标记每一行。这种情况过去是否发生过并不重要。此外,我正在尝试按组执行此标记。

考虑这个问题的一个直观方法是是否有人会在未来购买裤子。

id      date        item
1 2000-01-01 'foo'
1 2000-01-02 'pants'
1 2000-01-03 'bar'
2 2000-01-02 'organ'
2 2000-02-01 'beef'
3 2000-01-01 'pants'
3 2000-01-10 'oranges'
3 2000-02-20 'pants'

反过来会变成:

id      date        item      will_buy_pants
1 2000-01-01 'foo' 1
1 2000-01-02 'pants' 0
1 2000-01-03 'bar' 0
2 2000-01-02 'organ' 0
2 2000-02-01 'beef' 0
3 2000-01-01 'pants' 1
3 2000-01-10 'oranges' 1
3 2000-02-20 'pants' 0

编辑:这不是一个预测问题。是否有人会买裤子已经在数据中表达出来了。我只想在每一行都有一个标志。

最佳答案

设置

from StringIO import StringIO
import pandas as pd

text = """id date item
1 2000-01-01 'foo'
1 2000-01-02 'pants'
1 2000-01-03 'bar'
2 2000-01-02 'organ'
2 2000-02-01 'beef'
3 2000-01-01 'pants'
3 2000-01-10 'oranges'
3 2000-02-20 'pants'"""

df = pd.read_csv(StringIO(text), delim_whitespace=True, parse_dates=[1])

解决方案

我正在使用嵌套apply

def check_future_pants(x, df):
date_condition = x.date < df.date
pant_condition = df.item == "'pants'"
return (date_condition & pant_condition).any()

def check_df_pants(df):
return df.apply(lambda x: check_future_pants(x, df), axis=1)

df['will_buy_pants'] = df.groupby('id', group_keys=False).apply(check_df_pants)

演示/说明

# Let's start with a sub-group
df1 = df[df.id == 1].copy()

print df1.apply(lambda x: check_future_pants(x, df1), axis=1)

0 True
1 False
2 False
dtype: bool

这适用于一组,但我所做的检查适用于 DataFrame,因此我使用另一个检查函数 check_df_pants 执行嵌套的 apply

df['will_buy_pants'] = df.groupby('id', group_keys=False).apply(check_df_pants)
pring df

id date item will_buy_pants
0 1 2000-01-01 'foo' True
1 1 2000-01-02 'pants' False
2 1 2000-01-03 'bar' False
3 2 2000-01-02 'organ' False
4 2 2000-02-01 'beef' False
5 3 2000-01-01 'pants' True
6 3 2000-01-10 'oranges' True
7 3 2000-02-20 'pants' False

关于python - Pandas 按群体检查 future 状况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988306/

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