我在panda数据框中基于其他列的值更新列时遇到了一点问题。我想做的是基于下面的3个日期列更新列NEWVAL
:
date1 | date2 | date3 | Val1 | NEWVAL
---------------------------------------------------------------
2010-01-02 | 2010-01-07 | 2010-01-14 | 2 | 2
2010-01-10 | 2010-01-23 | 2010-05-06 | 5 |
2010-01-02 | 2010-01-07 | 2010-01-14 | 7 |
如果date1
或date2
中的月份与date3
中的相同年份和月份相同,则我希望使用Val1
中的值更新NEWVAL
列。因此,在上面的示例中,由于年份2010
和月份为01
,因此将列Val1
中的值放入NEWVAL
我对这个问题也做了一些修改,我不仅希望根据3个日期列更新NEWVAL
,还希望根据Group1
和Group2
列更新NEWVAL
,如下所示:
date1 | date2 | date3 | Group1 | Group2 | Val1 | NEWVAL
--------------------------------------------------------------------------------
2010-01-02 | 2010-01-07 | 2010-01-14 | AA | AAAA | 2 | 2
2010-01-10 | 2010-01-23 | 2010-05-06 | bb | AAAA | 5 |
2010-04-28 | 2010-04-23 | 2010-04-19 | bb | bbbb | 7 | 7
如果这是一个简单的问题,我很抱歉-如果我不使用日期,我可以很容易地做到这一点,但我在使用datetime64[ns]
数据类型时遇到了麻烦(如果可能的话,我不希望转换它),所以如果有人能帮助我,我将非常感谢。
编辑:第一部分我能做,但是有没有办法像我的第二个例子那样,分组做同样的事情?
1条答案
按热度按时间xmakbtuz1#
第一个月
日期 * 的dtypes是对象,而不是提问者的日期时间。
1.提取年和月
s
1.检查行的所有日期是否为同一年和同一月
cond1
1.生成NEWVAL列
out