根据条件替换 pandas 数据框列中的部分 int 或 string
我有一个 pandas 数据框,其中有一列表示日期,但以 int 格式保存。对于几个日期,我有第 13 个月和第 14 个月。我想用第 12 个月替换第 13 个月和第 14 个月。然后,最终将其转换为 date_time 格式。
Original_date
20190101
20191301
20191401
New_date
20190101
20191201
20191201
我尝试将格式替换为字符串,然后仅根据字符串 [4:6] 中的月份索引进行替换,但没有成功:
df.original_date.astype(str)
for string in df['original_date']:
if string[4:6]=="13" or string[4:6]=="14":
string.replace(string, string[:4]+ "12" + string[6:])
print(df['original_date'])
I have a pandas dataframe with a column representing dates but saved in int format. For several dates I have a 13th and a 14th month. I would like to replace these 13th and 14th months by the 12th month. And then, eventually transform it into date_time format.
Original_date
20190101
20191301
20191401
New_date
20190101
20191201
20191201
I tried by replacing the format into string then replace only based on the index of the months in the string [4:6], but it didn't work out:
df.original_date.astype(str)
for string in df['original_date']:
if string[4:6]=="13" or string[4:6]=="14":
string.replace(string, string[:4]+ "12" + string[6:])
print(df['original_date'])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用pregex使用
.str.replace
You can use
.str.replace
with regex为什么不写正则表达式呢?
产量:(
NB您需要将输出重新分配给列以持久存储在内存中。)
Why not just write a regular expression?
Yielding:
(Nb you will need to reassign the output back to a column to persist it in memory.)
您可以在单独的函数中编写替换和逻辑,如果您还需要更改年份或月份,您还可以选择轻松调整它。
apply
允许您在 DataFrame 的每一行上使用该函数。You can write the replace and logic in a seperate function, which also gives you the option to adapt it easily if you also need to change the year or month.
apply
lets you use that function on each row of the DataFrame.