python - 是否有一种基于另一列的值增加列值的pythonic方法?
问题描述
我想为一列分配增量值。但是,增量不是连续的,发生增量的行取决于另一列的值。
目前我正在为此使用一个 for 循环,这非常慢。我得到了我想要的结果,如下所示。你能建议一种更pythonic的方式来做到这一点吗?
a=1
for index, row in df.iterrows():
df.loc[index,'trip_id'] = a
if df.loc[index,'interim_tour_chk'] >= 0:
a = a+1
解决方案
你可以试试这个:
df['trip_id'] = (df['interim_tour_chk'] == 0).cumsum()
解释:
(df['interim_tour_chk'] == 0)
将返回一个 pandas 系列的布尔值,判断每个 'interim_tour_chk' 是否等于 0。这里是pandas 的文档 cumsum。
推荐阅读
- wordpress - 当您有选择时,HTTP、HTTPS 是安装 wordpress 的正确位置
- ios - 压缩视频上的音频在 xamarin 形式 ios 中失真
- python - (Sympy)为什么在尝试使用牛顿法求解特定方程块时,尽管其他块工作,但我得到一个不受支持的操作数错误?
- django - 从 HTML 页面更新内容时,Django 接收到重复信号
- windows - 为什么 $OSTYPE 在 Windows 上返回“linux-gnu”?
- php - php中父对象ID与子对象Product ID匹配时如何根据上位ID选择数据?
- flutter - 无法通过 Firestore 调用存储在全局变量中
- bootstrap-5 - Bootstrap Offcanvas 导航 - 不要在关闭时重置背景
- python - 使用 Python 在 Excel 文件中添加过滤器选项
- c++ - 使用 CreateFile() 将文件添加到 Onedrive