我有一个表,其中的行如下:
| 姓名 | 日期_从 | 日期到 | 年龄 |
|---|---|---|---|
| 爱丽丝 | 2004年12月1日 | 2008年4月3日 | 35 |
| 鲍勃 | 2013年2月4日 | 2014年11月4日 | 43 |
我想制作一个表,将每一行按
date_from和date_to列分成一年间隔,保留Name和 更新age,如下所示:
| 姓名 | 日期_从 | 日期到 | 年龄 |
|---|---|---|---|
| 爱丽丝 | 2004年12月1日 | 2005年12月1日 | 35 |
| 爱丽丝 | 2005年12月1日 | 2006年12月1日 | 36 |
| 爱丽丝 | 2006年12月1日 | 2007年12月1日 | 37 |
| 爱丽丝 | 2007年12月1日 | 2008年12月1日 | 38 |
| 爱丽丝 | 2008年12月1日 | 2008年4月3日 | 39 |
| 鲍勃 | 2013年2月4日 | 2014年2月4日 | 43 |
| 鲍勃 | 2014年2月4日 | 2014年11月4日 | 44 |
这可以用 SQL 实现吗?
我想做这样的事情:
df['A'] = max(0, min(df.B, df.C - df.D))
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个ValueError(“系列的真值不明确”),我猜这意味着 和max函数min正在幕后执行一些布尔运算,并且这不会分布在系列上。我知道您可以通过例如获得某些列集的最小/最大
df[['col1','col2','col3']].max(axis = 1)
Run Code Online (Sandbox Code Playgroud)
因此我应该能够通过创建一些具有中间值的临时列来获得我想要的输出,但我想要一个直接执行此操作的干净解决方案。如何在无需为一次性中间值创建额外列的情况下做到这一点?