python - 按日期之间的最小绝对差按组选择行

标签 python pandas datetime dataframe

            A           B      C
0  2002-01-16  2002-02-28   Jack
1  2002-01-16  2002-01-30  Helen
2  2002-01-16  2002-02-28  Peter
3  2002-01-16  2002-01-30    Jud
4  2002-04-27  2002-04-30   Nick
5  2002-04-27  2002-05-25  Wendy
6  2002-04-27  2002-04-30  Bryan
7  2002-04-27  2002-05-25  Sarah

我想为每个 A 组选择 A 日期在时间上更接近 B 日期的行。

输出应该是:

            A           B      C
1  2002-01-16  2002-01-30  Helen
3  2002-01-16  2002-01-30    Jud
4  2002-04-27  2002-04-30   Nick
6  2002-04-27  2002-04-30  Bryan

最佳答案

使用:

df = df[df['B'].sub(df['A']).groupby(df['A']).transform(lambda x: x == x.min())]
print (df)
           A          B      C
1 2002-01-16 2002-01-30  Helen
3 2002-01-16 2002-01-30    Jud
4 2002-04-27 2002-04-30   Nick
6 2002-04-27 2002-04-30  Bryan

详细信息:

print (df['B'].sub(df['A']))

0   43 days
1   14 days
2   43 days
3   14 days
4    3 days
5   28 days
6    3 days
7   28 days
dtype: timedelta64[ns]

print (df['B'].sub(df['A']).groupby(df['A']).transform(lambda x: x == x.min()))
0    False
1     True
2    False
3     True
4     True
5    False
6     True
7    False
dtype: bool

关于python - 按日期之间的最小绝对差按组选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49634468/

相关文章:

python - 从字符串文字设置变量名时如何编写 DRY 代码?

python - 在没有外部库的情况下在 Python 中编写 git 命令脚本

c++ - 改变非正数除法的 python 数学模块行为

python - 在 pandas DataFrame 中保留每组的最后 N 条记录

Python,运算错误,想要使dataframe标准计算,它包含: string,整数,浮点

java - 如何根据 1 小时间隔获取时间段

python - 外键属性上的 Django Admin 过滤器

python - 使用正则表达式从数据框中删除/排除列 - Python

javascript - 这种使用 moment.js 解析 ASP.NET 日期的尝试是库的错误还是我的代码的错误?

python - 'datetime.time' 没有 'mktime'