首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从熊猫当前行列与下一行列的比较中获得最小日期值

从熊猫当前行列与下一行列的比较中获得最小日期值
EN

Stack Overflow用户
提问于 2019-02-14 14:48:11
回答 2查看 95关注 0票数 0

我有一个熊猫df有3栏:col1col2col3。在某些情况下,第1和第3列中的值可能为空。列col2开始为空。目标是填充col2。我想迭代每一行,以便将当前行的每个col3值与下一行中的col1进行比较。col2应该成为最小的日期值(如您在图像中所看到的)。

我怎样才能在熊猫身上做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-14 16:25:08

np.minshift结合使用

样本数据

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

df = pd.DataFrame({'col1': ['2013-12-19', '2014-12-16', '2015-02-06', '2016-01-22', 
                            '2016-02-24', '2016-04-25', '2017-04-13'],
                   'col3': ['2014-06-28', '2015-10-07', '2015-07-19', '2016-02-11', 
                            '2016-04-28', '2017-02-28', '2018-02-15']})
df = df.apply(pd.to_datetime)

代码

代码语言:javascript
运行
复制
df['col2'] = np.min([df.col1.shift(-1).values, df.col3.values], axis=0)

输出df

代码语言:javascript
运行
复制
        col1       col3       col2
0 2013-12-19 2014-06-28 2014-06-28
1 2014-12-16 2015-10-07 2015-02-06
2 2015-02-06 2015-07-19 2015-07-19
3 2016-01-22 2016-02-11 2016-02-11
4 2016-02-24 2016-04-28 2016-04-25
5 2016-04-25 2017-02-28 2017-02-28
6 2017-04-13 2018-02-15 2018-02-15
票数 1
EN

Stack Overflow用户

发布于 2019-02-14 14:57:53

抱歉.我误解了你的问题。我承认我看过了-对不起!

这应该管用..。

代码语言:javascript
运行
复制
for idx in range(len(df)-1):
    df.loc[idx, 'col2'] = min(df.loc[idx, 'col3'], df.loc[idx+1, 'col1'])

由于偏移迭代,这将使col2中的最后一个值保留为nan

如果这有帮助的话请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54693111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档