我正在尝试将日期转换为周期间,然后获得期间的第一部分。
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
<div class="col-md-2 col-sm-6">
1
</div>
<div class="col-md-2 col-sm-6">
2
</div>
<div class="col-md-2 col-sm-6">
3
</div>
<div class="col-md-2 col-sm-6">
4
</div>
<div class="col-md-2 col-sm-6">
5
</div>
<div class="col-md-2 col-sm-6">
6
</div>
<div class="col-md-2 col-sm-6">
7
</div>
<div class="col-md-2 col-sm-6">
8
</div>
<div class="col-md-2 col-sm-6">
9
</div>
<div class="col-md-2 col-sm-6">
10
</div>
</div>
但这给我一个错误
df['Date'] = df['Date (mm/dd/yyyy)'].dt.to_period('W').apply(lambda r: r.start_time)
我正在使用pandas 0.25.2版本。
尽管它先前已运行,但这次未运行。无法确定发生了什么。请帮助解决错误
答案 0 :(得分:2)
使用技巧np.nan != np.nan
,因此您可以添加if-else
语句或将Series.to_timestamp
与默认how='s'
一起使用:
rng = pd.date_range('2017-04-03', periods=10)
df = pd.DataFrame({'Date (mm/dd/yyyy)': rng})
df.loc[0, 'Date (mm/dd/yyyy)'] = np.nan
df['Date'] = (df['Date (mm/dd/yyyy)'].dt.to_period('W')
.apply(lambda r: r.start_time if r == r else np.nan))
df['Date1'] = df['Date (mm/dd/yyyy)'].dt.to_period('W').dt.to_timestamp()
print (df)
Date (mm/dd/yyyy) Date Date1
0 NaT NaT NaT
1 2017-04-04 2017-04-03 2017-04-03
2 2017-04-05 2017-04-03 2017-04-03
3 2017-04-06 2017-04-03 2017-04-03
4 2017-04-07 2017-04-03 2017-04-03
5 2017-04-08 2017-04-03 2017-04-03
6 2017-04-09 2017-04-03 2017-04-03
7 2017-04-10 2017-04-10 2017-04-10
8 2017-04-11 2017-04-10 2017-04-10
9 2017-04-12 2017-04-10 2017-04-10