首页 > 解决方案 > 从数据框列表的字典中删除一个元素

问题描述

这是我的数据结构:

'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 类型。我认为这意味着我可以这样对待列表中的每个元素,但问题似乎是列表的元素是一个数据框。这很奇怪,因为我只想将其从列表中删除。提前致谢。

标签: pythonlistdataframedictionaryfor-loop

解决方案


那是因为如果您使用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

推荐阅读