python - 将函数应用于已有的日期列

标签 python pandas function date

我有以下虚构代码(我的代码是敏感的):

df
record_id     date    sick funny    happy
XK2C0001-3  7/10/2018   2   1       1
XK2C0002-1  7/10/2018   2   4       1
XK2C0003-9  7/11/2018   2   4       1
ZT2C0004-7  7/11/2018   2   4       1
XK2C0005-4  7/11/2018   1   1       1
XK2C0001-3  7/10/2018   2   4       1
XK2C0002-1  7/10/2018   2   4       1
XK2C0003-9  7/11/2018   1   4       1
XK2C0004-7  7/11/2018   2   4       1
ZT2C0005-4  7/11/2018   2   4       1


male_gender=df.loc[(df['sick'] == 1) | (df['funny'] == 1) | (df['happy'] == 1)]
male_gender['date'].value_counts().head()
2018-10-02    22
2018-10-03    14
2018-10-05    10
2018-11-01    10
2018-10-22    10
Name: date, dtype: int64

我有以下工作功能来过滤过去 7 个工作日:

prev_days = [today - timedelta(days=i) for i in range(10)]  
prev_days = [d for d in prev_days if d.weekday() < 5]       
for d in prev_days[:7]:                                     
    print(d)

我的问题是:如何将上面的函数应用到数据框列“日期”?我只是想要一个想法,上面的数据都是虚构的,你可以再举一个例子。

编辑:我想知道在过去 7 个工作日相对于今天我有多少male_gender。

最佳答案

将您的 df['date'] 转换为 datetime 系列,过滤您的数据帧,然后然后使用 pd.Series.value_counts :

df['date'] = pd.to_datetime(df['date'])

m1 = (df['sick'] == 1) | (df['funny'] == 1) | (df['happy'] == 1)  # custom conditions
m2 = df['date'] >= pd.Timestamp('today') - pd.DateOffset(days=7)  # last 7 days
m3 = ~df['date'].dt.weekday.isin([5, 6])                          # not Sat or Sun

res = df.loc[m1 & m2 & m3, 'date'].value_counts()

关于python - 将函数应用于已有的日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152235/

相关文章:

python - 更改 Anaconda 解释器

python - 在 PySimpleGUI 中制作一个文本框

python - 如何在现有 Excel 工作表下方写入数据框并忽略索引列值?

C++ 类元素加入的自动迭代器 vector

python - 在 Raspi 上使用带有 Python 的 C 库

python - 测试图像碰撞 Pygame

python - 获取 Pandas 中的日期分位数

python - Pandas:同时分配多个 *new* 列

选择了 mysql 枚举的 php 函数

javascript - 当创建一个只运行一次的函数时,重新定义应该在该函数之前还是之后进行?