熊猫在将所有日期转换为星期开始日期时出错

时间:2019-10-22 12:30:20

标签: python pandas

我正在尝试将日期转换为周期间,然后获得期间的第一部分。

<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版本。

尽管它先前已运行,但这次未运行。无法确定发生了什么。请帮助解决错误

1 个答案:

答案 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