我需要找出python中有日期的两列之间以天为单位的绝对差异。 这在excel中很简单,但我想要python。你知道吗
我有一个xlsx文件,我已将其读取到python数据帧(使用pd.read_excel
),示例数据读取如下:
这些列具有ddmmyyyy/dmmyyyy纯文本格式的日期详细信息。你知道吗
A B
2012年11月10日
26071993 27122007
28062010 312201年
16012010 21022016
02082015 14092010
现在我需要创建一个新的列C,其中包含a和B之间的绝对天数差。a可以小于或大于B。
如果B为空,则应考虑当前日期进行天数计算。但是A不会有空/空值。你知道吗
因此,输出将是天数的差值:
C
2432年
5267
1984年
2227年
1783年
我采用的方法是:
df['A'].apply(lambda x: '{0:0>8}'.format(x))
pd.to_datetime
转换为日期时间字段我被困在第三步,无法继续。有没有更简单的方法?你知道吗
第一种选择是个好主意。避免混淆哪一天或哪一个月。你知道吗
所以我们工作的数据帧在上面。数据类型都是
object
(string)。如果你能确认这一步就好了,因为其他一切都是从这里开始的。你知道吗然后使用日期时间:
然后是差异
编辑:解释错误
正如你所说的评论中的错误。这意味着您的列
A
不是数据类型object
。它不是int32
就是int64
。运行此命令以确认(I changed sample data columnA
dtype以演示错误):在使用
str.zfill
之前,需要将df
更改为object
,如下所示:将数据类型转换为
object
之后,一切都将正常工作。你知道吗zfill(8)
将0填充到字符串中,并使用pd.to_datetime
和coerce
以及NaT
上的filna
和今天的日期将它们转换为datetime。接下来,做减法A
和B
,做abs
,从timedelta
得到days
注意:添加预处理以使用
astype(str)
将df
数据类型转换为object
相关问题 更多 >
编程相关推荐