python - 创建新的 Dataframe 数据切片问题
问题描述
这是我的代码片段。但是代码有效,我收到以下错误:
“试图在数据帧的切片副本上设置一个值”
我猜这是由于一些不推荐使用的语法......
new_data['mon_fri'] = 0
for i in range(0,len(new_data)):
if (new_data['Dayofweek'][i] == 0 or new_data['Dayofweek'][i] == 4):
new_data['mon_fri'][i] = 1
else:
new_data['mon_fri'][i] = 0
解决方案
如果存在矢量化替代方案,请不要在 pandas 中循环,这里可以使用isin
布尔掩码并转换为整数以True/False
进行1/0
映射:
new_data['mon_fri'] = new_data['Dayofweek'].isin([0,4]).astype(int)
或使用numpy.where
:
new_data['mon_fri'] = np.where(new_data['Dayofweek'].isin([0,4]), 1, 0)
推荐阅读
- r - Quantmod R,如何使用 Sys.date 选择单元格?
- google-apps-script - OAuth 错误。无法解决 TOS 违规
- r - 在 R (OpenStreetMap pkg) 中调用 openmap 函数后抛出 NullPointerException
- c - C 结构中的函数指针
- javascript - 将一个页面中的项目添加到购物车中,该购物车将仅使用 JS/CSS/HTML 显示在另一个页面中
- xml - xslt 从 xml 节点值中嵌套选择
- regex - 正则表达式检测非拉丁字符
- typescript - 断言 TypeScript 应该无法键入检查一些示例代码
- git - 带有合并提交的 Git rebase
- java - 即使绘制了新文本,也设置一次 Swing 应用程序的默认字体