【发布时间】:2021-10-25 01:11:23
【问题描述】:
我正在尝试这样做,获取数据框日期并检查日期是否为月开始。如果是这样,请留下它或交换日期中的日期和月份部分
import pandas as pd
dummy_data1 = {
'id': ['1', '2', '3', '4', '5'],
'Feature1': ['A', 'C', 'E', 'G', 'I'],
'Feature2': ['B', 'D', 'F', 'H', 'J'],
'dates': ['01/09/2020','10/01/2020','01/11/2020','01/12/2020','01/02/2021']}
df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2', 'dates'])
df1
当我尝试这个时,
df2 = df1.assign(dates1=lambda df : pd.to_datetime(df.dates,format="%d/%m/%Y", errors="coerce")) \
.assign(dates2=lambda d : "" if d['dates1'].dt.is_month_start == True else "1")
我收到此错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
当它尝试这个时
df2 = df1.assign(dates1=lambda df : pd.to_datetime(df.dates,format="%d/%m/%Y", errors="coerce")) \
.assign(dates2=lambda d : "" if d['dates1'].dt.is_month_start is True else "1")
我的布尔值没有得到正确答案。任何人都可以帮助告诉我如何检查日期是否是一个月的开始。另外,如果您能告诉我如何交换月份和日期,那就太好了。 2020 年 10 月 1 日应换成 2020 年 1 月 10 日
【问题讨论】:
-
您是否真的需要在月初时使用 1 或 '' 的列,或者您只是想在不是月初时交换月日?
-
最好将
'dates'转换为正确的日期时间格式。计算、绘图和方法依赖于 datetime dtype。