在数据帧单元格中查找[Python列表]的匹配值之和?

在数据帧单元格中查找[Python列表]的匹配值之和?,python,function,pandas,dataframe,sum,Python,Function,Pandas,Dataframe,Sum,底线问题: 这很难看,对吧?对于数据帧: happyBarFrame['Sunday'].应用(lambda x:x==[0])。值计数()[0] 长版本:我正在尝试查找数据帧中“空”值的总和。当条目为[0]——列表时为空 我想最好的解决方案是不要在数据帧单元格中使用列表[0]作为值。假设我坚持这样做,我想理解为什么这么多函数不工作,给出一个“不可损坏列表”错误 是的,这是数据科学课的家庭作业。我们浏览了一个介绍酒吧和快乐时光的网页。我已经构建了这个数据框架,我使用了小时列表,其中列表中的最后一

底线问题:

这很难看,对吧?对于数据帧:

happyBarFrame['Sunday'].应用(lambda x:x==[0])。值计数()[0]

长版本:我正在尝试查找数据帧中“空”值的总和。当条目为[0]——列表时为空

我想最好的解决方案是不要在数据帧单元格中使用列表[0]作为值。假设我坚持这样做,我想理解为什么这么多函数不工作,给出一个“不可损坏列表”错误

是的,这是数据科学课的家庭作业。我们浏览了一个介绍酒吧和快乐时光的网页。我已经构建了这个数据框架,我使用了小时列表,其中列表中的最后一个条目是快乐时光结束时。忽略数据中的几个错误:

我开始相信,将列表存储在数据帧中并不是最好的主意,因为我希望使用的许多函数告诉我它们不能作为列表散列:

[173]中的
:happyBarFrame['Sunday'].value\u counts()

。。。正在跳过长错误

TypeError:不可损坏的类型:“列表”

问题是:我尝试了以下方法,还有很多其他方法。按天计算具有单个0(单元格值=[0])列表的单元格的最佳方法是什么?

happyBarFrame[happyBarFrame['Sunday'].isin([[0]])]
--不起作用
happyBarFrame[happyBarFrame['Sunday'].isin([0])]
--不起作用

两者都给出
TypeError:unhable类型:“list”


happyBarFrame['Sunday'].应用(lambda x:x==[0])。值计数()[0]

确实有效,但感觉不对我可以迭代一周中的几天,按天计算,然后构建需要构建的直方图。但一定有更好的办法,这看起来真的很低效,是吗


编辑:修复了一个需要在值中计算True而不是False的错误\u counts[0]

如果您只想将函数应用于数据帧中的每个单元格,可以使用
applymap
;然后,要获取列总和,只需调用
sum

df = pd.DataFrame({"Sunday": [[0],[0,1]], "Monday": [[0],[0]]})
df.applymap(lambda x: x == [0]).sum()

Monday    2
Sunday    1
dtype: int64

我已经研究了几个“类似”的问题,但没有找到一个专门处理在数据帧中使用Python列表作为值的问题,如果有重复的问题,我很乐意删除这个问题,最后我将构建一个包含七个项目的列表,一周中每一天有快乐时间的酒吧的总和:
listOfSumsByDay.append(happyBarFrame['Sunday'].apply(lambda x:x==[0])。value_counts()[1])
yeah dataframe中的列表不是一种很容易使用的格式,如果我是你,我会为每天的happyhour_开始时间和happyhour_持续时间设置单独的列,设置为
NaN
如果那天没有欢乐时光如果你必须存储这样的数组,你可以使用元组而不是列表,至少这些是Hashable的,正如你所做的那样此外,在数据帧中使用列表通常会导致问题。您应该考虑将数据重新构造为“长”格式,只有四列:餐厅、链接、日期和时间。张教授的快乐时光将是一系列的行:星期日/15、星期日/16、星期日/17、…、星期一/15、星期一/16等等。你会发现这种格式对于熊猫让你做的许多任务通常更容易。哦,非常酷!我看到了applymap,但没有跟进。让我试试这个,你先回答了,如果它有效的话,这是我很快就会接受的最清晰的答案。谢谢这很酷,我只需要剪切链接栏,条形图真的很简单!谢谢
happyBarFrame.applymap(lambda x:x!=[0]).sum().plot(kind='bar')