python - 从数据框列表的字典中删除一个元素
问题描述
这是我的数据结构:
'CRWD', [ Date CRWD
0 2020-10-01 0.040416
1 2020-10-02 -0.020998, Date CRWD
0 2020-10-05 0.035819
1 2020-10-06 0.001726
2 2020-10-07 -0.003859
3 2020-10-08 -0.011067
4 2020-10-09 0.004197, Date CRWD
0 2020-10-12 0.016647
1 2020-10-13 0.046862
2 2020-10-14 -0.032788
3 2020-10-15 -0.016442
4 2020-10-16 -0.000138]
所以它的 {StockTicker : [week1,week2,week3,etc]} 其中 weekX 对应于该周内每一天的数据框。我想删除不是整周的日子(如本例中的第 1 周)。这是我的做法:
for k in weekList.keys():
for x in weekList[k]:
if len(x) <= 3:
weekList[k].remove(x) #Where error occurs
weekList
我收到此错误:ValueError:只能比较标记相同的 DataFrame 对象
在代码中,x 是 dataframe 类型,而 weekList[k] 是 List 类型。我认为这意味着我可以这样对待列表中的每个元素,但问题似乎是列表的元素是一个数据框。这很奇怪,因为我只想将其从列表中删除。提前致谢。
解决方案
那是因为如果您使用list.remove(x)
,那实际上是扫描整个list
以找到等于x
并删除它的元素。但要做到这一点,Python 需要将x
(一个 DataFrame 对象)与list
(也是 DataFrames)中的元素进行比较,并且它不能像ValueError
告诉你的那样这样做。
尝试以下,它应该工作:
for i, x in enumerate(weekList[k]):
if len(x) <= 3:
del weekList[k][i] #Where error occurs
推荐阅读
- git - GIT 使用具有不同历史记录的分支创建拉取请求
- core-data - 在 SwiftUI 中编辑核心数据对象
- ios - Xcode 11 和 iOS 13 Modal ViewController 丢失黑色覆盖
- angular - 使用路由器导航组件会给出没有为 ConfirmationDialogComponent 找到组件工厂
- c# - 我的 SQL 服务器上有一个检查约束,如何在 c# 中为检查约束设置验证?
- javascript - 如何在 next.js 应用中使用谷歌分析?
- powershell - Powershell脚本将文件导入文件选择文件按钮
- json - SQL Server For JSON Path 动态列名
- php - Outlook 链接预览打破“一次性 URL”
- sql - 如果所选日期在使用 Visual Basic .Net 的 sql 表中的现有日期内,则标记它们