如何在熊猫列后期操作中保持前导零?
Posted
技术标签:
【中文标题】如何在熊猫列后期操作中保持前导零?【英文标题】:How to keep leading zeroes from a panda column post operation? 【发布时间】:2022-01-01 12:14:13 【问题描述】:我有一列的数据为:
Date |
---|
'2021-01-01' |
'2021-01-10' |
'2021-01-09' |
'2021-01-11' |
我只需要将“年和月”作为一列并将其作为整数而不是像“2021-01-01”这样的字符串保存为 202101。(我不需要日部分) .
当我尝试清理数据时,我可以这样做,但它会删除前导零。
df['period'] = df['Date'].str[:4] + df['Date'].str[6:7]
这给了我:
Date |
---|
20211 |
202110 |
20219 |
202111 |
如您所见,从 1 月到 9 月,它只返回 1 到 9 而不是 01 到 09,这会产生差异。如果我在合并过程中手动添加一个零,它将使“2021-10”成为 2021010。我希望它只是没有连字符的年份和月份,并将前导零保留几个月。请参阅下面我希望它如何出现在新列中。
Date |
---|
202101 |
202110 |
202109 |
202111 |
我可以使用循环来做到这一点,但效率不高。有没有更好的方法在 python 中做到这一点?
【问题讨论】:
【参考方案1】:去除反逗号,将日期强制转换为所需格式的日期时间并将其转换为整数。代码如下
df['Date_edited']=pd.to_datetime(df['Date'].str.strip("''")).dt.strftime('%Y%m').astype(int)
Date Date_edited
0 '2021-01-01' 202101
1 '2021-01-10' 202101
2 '2021-01-09' 202101
3 '2021-01-11' 202101
【讨论】:
【参考方案2】:由于对 Python 中 slice notation 的使用存在误解,因此删除了前导零。
尝试将您的代码更改为:
df['period'] = df['Date'].str[:4] + df['Date'].str[5:7]
注意从 [6:7] 到 [5:7] 的变化。
【讨论】:
以上是关于如何在熊猫列后期操作中保持前导零?的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]