python - 如何在 Pandas 中获取年、月、周和周中的日期?
问题描述
我有一个 Pandas 数据框,如下所示
我想创建一个新列,它从上述所有列的信息中得知确切的日期。代码应如下所示:
df['Date'] = pd.to_datetime(df['Month']+df['WeekOfMonth']+df['DayOfWeek']+df['Year'])
解决方案
我能够为您的情况找到解决方法。您需要为月份和星期几定义字典。
month = {"Jan":"01", "Feb":"02", "March":"03", "Apr": "04", "May":"05", "Jun":"06", "Jul":"07", "Aug":"08", "Sep":"09", "Oct":"10", "Nov":"11", "Dec":"12"}
week = {"Monday":1,"Tuesday":2,"Wednesday":3,"Thursday":4,"Friday":5,"Saturday":6,"Sunday":7}
使用此词典,我对自定义数据框使用的转换是:
rows = [["Dec",5,"Wednesday", "1995"],
["Jan",3,"Wednesday","2013"]]
df = pd.DataFrame(rows, columns=["Month","Week","Weekday","Year"])
df['Date'] = (df["Year"] + "-" + df["Month"].map(month) + "-" + (df["Week"].apply(lambda x: (x - 1)*7) + df["Weekday"].map(week).apply(int) ).apply(str)).astype('datetime64[ns]')
但是,您必须小心。以您发布的一些数据为例,有些日期超出了日期范围。例如,对于
row = ["Oct",5,"Friday","2018"]
显示的日期是 2018-10-33。我建议使用一些逻辑来过滤您的数据,以避免此类问题。
推荐阅读
- firebase - 尝试将 Firebase UI 用于 firestripe 示例代码时出现错误 404
- kotlin - 首次安装时位置权限和 LocationComponent 应用程序崩溃
- javascript - useState 方法不允许访问外部变量?
- c++ - 在进程之间传递多态对象
- python - Python - 用户生成的字典名称和输入
- reactjs - react-simple-maps 将地图倒置
- r - R:ggplot中特定条之间的间隙
- android - 我应该将哪个 APK 文件上传到 Firebase App Distribution?
- react-native - 将{/*评论*/}添加到react native的返回函数中时出现“不变违规”错误
- java - 如何在两个不同的 CRM 系统中自动化处理复制故障单?