python - 执行矢量化操作时如何在 Pandas 中访问系列的行值
问题描述
我有一个包含数百万行的稀疏/宽数据框,但大致可以这样总结:
d = {
"year" : [2019, 2020, 2021],
2018 : [True, True, False],
2019 : [True, False, False],
2020 : [False, False, True],
2021 : [False, False, True]
}
df = pd.DataFrame(d)
我想根据某些条件创建一些额外的布尔列。当我这样做时:
df['consecutive'] = df[df['year']] * df[df['year'] - 1]
我明白了ValueError: Wrong number of items passed 4, placement implies 1
但是当我像这样对年份进行硬编码时:
df['consecutive'] = df[2019] * df[2018]
我得到了预期的结果:
year 2018 2019 2020 2021 consecutive
0 2019 True True False False True
1 2020 True False False False False
2 2021 False False True True False
我之前在较小数据集上的实现使用 df.apply() 但性能在这里是一个问题,因此矢量化方法很重要。非常感谢任何建议!
解决方案
推荐阅读
- reactjs - 以函数为参数的自定义 React 钩子
- python - 如何使用 python 根据键值合并数据帧或 CSV 文件?
- google-chrome - Pupeteer - 设置 --remote-debug-port
- r - 在特定列中插入具有相同常量值的一行(Rstudio)
- python - “n”个 shapefile 的交集区域 - Python
- python - 由于 Python Pandas 中的夏令时,如何处理具有可变时区偏移的时间序列?
- java - 我应该在我的依赖项中添加什么来制作工具栏?
- python-3.x - 删除新插入行中的变量
- jsp - 如何解决未找到 Web 应用声明
- bash - 如何设置使 git 和 conda 都可以在 bash 中显示的 PS1?