python - 更新行的替代方法
问题描述
我有以下示例数据:
日期 | 价值 | |
---|---|---|
0 | 2021/05 | 50 |
1 | 2021/06 | 60 |
2 | 2021/07 | 70 |
3 | 2021/08 | 80 |
4 | 2021/09 | 90 |
5 | 2021/10 | 100 |
我想更新“日期”列中的数据,例如“2021/05”变成“05/10/2021”,“2021/06”变成“06/12/2021”等等(我必须为每一行手动选择新日期)。
有没有更好/更聪明的方法来代替:
for i in df.index:
if df['date'][i] == '2021/05':
df['date'][i] = '05/10/2021'
elif df['date'][i] == '2021/06':
df['date'][i] = '06/12/2021'
问题是有一百多行需要更新,上面的代码会非常长。
解决方案
我会使用交互式方法,最后将修改DataFrame
后的文件保存到文件中:
import pandas as pd
dt = pd.DataFrame({"date":["2021/05", "2021/06", "2021/07", "2021/08", "2021/09", "2021/10"], "value": [50, 60, 70, 80, 90, 100]})
for n, i in enumerate(dt.loc[:,"date"]):
to_be_parsed = True
while parsed:
day = input("What is the day for {:s}?".format(i))
date_str = "{:s}/{:0>2s}".format(i, day)
try:
dt.loc[n,"date"] = pd.to_datetime("{:s}/{:0>2s}".format(i, day)).strftime("%m/%d/%Y")
to_be_parsed = False
except:
print("Invalid date: {:s}. Try again".format(date_str))
output_path = input("Save amended dataframe to path (no input to skip): ")
if len(output_path) > 0:
dt.to_csv(output_path, index=False)
推荐阅读
- dart - 如何从运行时类型(Type)转到绑定类型参数(T)?
- python - Swap 和 Sun,自定义测试用例通过,但内置运行时错误,为什么?
- python - 如何正确连接用python中的循环提取的3个数据帧?
- debugging - 在 VS 代码中调试 C++ 期间无法在外部控制台中输入输入
- authentication - context.HttpContext.Request.Headers["Authorization"] 返回空值
- camera - 一加6T的FOV?
- windows - Windows 终端/Powershell 智能感知
- c++ - 最小堆比较器
- python - 带有 EndUser 模型的任务模型
- unity3d - 为什么矢量和 OnMove 函数采用不同的轴?