为了账号安全,请及时绑定邮箱和手机立即绑定

新列从另一个数据帧的 max(value) 增量添加一个

新列从另一个数据帧的 max(value) 增量添加一个

哈士奇WWW 2022-07-05 15:30:46
如何添加一个df1.days使用max(df2.days) + 1(1175) 的列,并为所有剩余的行增量添加一个?我不能为此使用 cumsums。df1 = pd.DataFrame({        'date': ['2001-01-01','2001-01-02','2001-01-03', '2001-01-04', '2001-01-05'],        'prod': [800, 900, 1200, 700, 600]})df2 = pd.DataFrame({'days': [99,1,188,1173,1174]})所需的数据框:print(d1)         date  prod days0  2001-01-01   800 11751  2001-01-02   900 11762  2001-01-03  1200 11773  2001-01-04   700 17784  2001-01-05   600 1779
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

1.pandas方法

使用fillna和cumsum:


df1.loc[0, 'days'] = df2['days'].max()

df1['days'] = df1['days'].fillna(1).cumsum()


         date  prod    days

0  2001-01-01   800  1175.0

1  2001-01-02   900  1176.0

2  2001-01-03  1200  1177.0

3  2001-01-04   700  1178.0

4  2001-01-05   600  1179.0

2.numpy方法

df1['days'] = np.cumsum(np.append([df2['days'].max()], np.ones(len(df1)-1)))


         date  prod    days

0  2001-01-01   800  1175.0

1  2001-01-02   900  1176.0

2  2001-01-03  1200  1177.0

3  2001-01-04   700  1178.0

4  2001-01-05   600  1179.0

3. 不cumsum带for loop

(不是优选的)


values = []

value = df2['days'].max()

for x in range(len(df1)):

    values.append(value)

    value += 1


df1['days'] = values


         date  prod  days

0  2001-01-01   800  1175

1  2001-01-02   900  1176

2  2001-01-03  1200  1177

3  2001-01-04   700  1178

4  2001-01-05   600  1179


查看完整回答
反对 回复 2022-07-05
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以插入范围为 =(df2 天 max+1 到 df2 天 max+行数)的列。第一个参数 len(df1.columns) 是在最后加上这一列,不影响逻辑


df1.insert(len(df1.columns),'days',range(df2.days.max()+1, df2.days.max()+1+len(df1)))


date    prod    days

0   2001-01-01  800 1175

1   2001-01-02  900 1176

2   2001-01-03  1200    1177

3   2001-01-04  700 1178

4   2001-01-05  600 1179


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号