python - 在 python pandas 中根据 if-elif-else 条件创建一个新列
问题描述
我想向d
DataFrame 添加一列。创建d
列时,条件如下:
如果列中以 11 开头a
,则获取列中的值b
,否则获取列中的值c
。
a b c
11101 100 150
11201 200 250
13301 300 350
a b c d
11101 100 150 100
11201 200 250 200
13301 300 350 350
解决方案
np.where
将列转换a
为后使用str
:
df["a"] = df["a"].astype("str")
df["d"] = np.where(df["a"].str.startswith("11"), df["b"], df["c"])
或者如果您不想更改a
原始数据框中的数据类型
df["d"] = np.where(df["a"].astype("str").str.startswith("11"), df["b"], df["c"])
推荐阅读
- google-chrome - 如何使 Chrome 始终使用远程调试端口标志启动
- c++ - 在 shinyapp.io 中编译 C++ 代码
- python-3.x - 如何在 pyqt5 中运行命令行命令
- javascript - Cucumber js 1/Webdriver.io - 将屏幕截图嵌入到 step 而不是 After hook
- javascript - Mongoose:如何将附加字段添加到子文档数组中
- haskell - Haskell:添加噪声的效率迭代图
- c++ - 我们可以在主函数中声明嵌套类对象吗
- j - 使用 pjson 库获取雅虎股票报价
- postgresql - Heroku 数据库恢复失败,说多个应用程序,但应用程序包含在恢复命令中
- firebase - Flutter/Dart/FireStore 查询错误:NoSuchMethod