在 Python 中使用 for 循环在日期列中添加前导零
Posted
技术标签:
【中文标题】在 Python 中使用 for 循环在日期列中添加前导零【英文标题】:Using for loop in Python to add leading zeros to date column 【发布时间】:2020-12-30 20:28:48 【问题描述】:我查看了很多其他问题,但没有找到一个非常合适的问题。
假设我有数据框,df:
Name Month
Bob 5
Jim 7
Mary 12
我正在尝试编写一个 for 循环,它将前导零添加到具有一位数的月份(并按原样打印其他月份),然后我可以用列表覆盖该列。
这就是我所拥有的
list=
for i in df['Month']:
if len(df['Month'][i]) < 2:
print(":02".format(i))
else:
print(i)
print(list)
df['Month']=list
这样的代码给了我错误:
TypeError: object of type 'numpy.int64' has no len()
我不完全确定在哪里进行故障排除或从这里开始。谢谢!
【问题讨论】:
您混合了 2 种循环方式: - for i in df['Month'] 将评估为 5,然后是 7,然后是 12。 - 可能您的意思是“for i in range (0, len(df['月'] 不幸的是,我必须为此使用循环(它用于分配),因此不能使用 zfill 的解决方法。谢谢巨魔,我会考虑改变那部分。 【参考方案1】:给你(没有循环):
df["Month"] = df.Month.map(":02".format)
【讨论】:
这比循环优雅得多:-)【参考方案2】:df['Month'].astype(str).str.zfill(2)
【讨论】:
【参考方案3】:你可以试试这个:
df = pd.read_csv('file.csv', converters='Month': ':0>2'.format).astype('str')
print(df)
【讨论】:
【参考方案4】:为此使用 zfill:
df['Month'] = df['Month'].astype(str).str.zfill(2)
print(df)
Name Month
0 Bob 05
1 Jim 07
2 Mary 12
【讨论】:
以上是关于在 Python 中使用 for 循环在日期列中添加前导零的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用collect()和for循环的情况下将一个(IP地址)的特定部分与RDD python pyspark中另一列中的其他IP地址进行比较