python - 使用涉及 shift() 的其他列的最大值创建一个新的 df 列
问题描述
我有一个DF如下:
d1=pd.DataFrame({'a':[0,1,0,1,2,4,5,1,7,8,0],'b':[0,1,2,4,5,7,1,3,1,0,1]})
我想生成一个名为'new' 的新列,它基于a 列的最大值和b 列的前一行值(即'b' shift())。
我尝试执行以下操作:
df'[new']=df[['a',df['b'].shift()]].max(axis=1)
然而我得到了一些可变的错误信息。
我想要的输出如下:
解决方案
IIUC,你可以试试:
df['new_col'] = df.assign(b = df['b'].shift(fill_value = 0)).max(axis =1)
输出:
a b new_col
0 0 0 0
1 1 1 1
2 0 2 1
3 1 4 2
4 2 5 4
5 4 7 5
6 5 1 7
7 1 3 1
8 7 1 7
9 8 0 8
10 0 1 0
注意:如果您想更具体地了解这些列。
df['new_col'] = df.assign(b=df['b'].shift(fill_value=0))[
['a', 'b']].max(axis=1)
df['new_col'] = pd.concat([df['b'].shift(fill_value=0), df['a']], 1).max(1)
推荐阅读
- react-native - navigation.navigate 在 Stack Navigator 的 headerRight 中的按钮上
- azure - 如何将位于本地 FTP 服务器的压缩文件夹迁移到 Azure 存储?
- r - 使用 AWS db 部署 shinyapp
- spring-boot - 为什么控制器类在springBoot应用程序中不返回jsp页面
- php - 获取每种类型分组项目的有限项目 laravel
- reactjs - 看到将 create-react-app 应用程序部署到 heroku 的空白页
- python - 分析面部表情识别的学习曲线
- python - 在 python 函数中定义的 locals() 不起作用
- tensorflow - TensorFlow 4-d 张量
- javascript - 如何将 Javascript 对象转换为 ArrayBuffer?