底线问题:
这很难看,对吗?对于pandas数据帧:
happyBarFrame['Sunday'].apply(lambda x : x == [0]).value_counts()[0]
长版: 我想找到"空"的总和Pandas Dataframe中的值。条目为[0]时为空 - 列表。
我想最好的解决方案是不要将list [0]用作数据帧单元格中的值。假设我坚持这一点,我想了解为什么这么多功能不起作用,给出一个不可靠的列表"错误?
是的,这是数据科学课的家庭作业。我们刮了一个显示酒吧和欢乐时光的网页。我已经建立了这个数据框,我正在使用小时列表,其中列表中的最后一个条目是欢乐时光结束时。忽略数据中的几个错误:
我开始相信在数据框中存储列表并不是最好的主意,因为我希望工作的许多函数告诉我它们不能作为列表进行哈希:
In [173]: happyBarFrame['Sunday'].value_counts()
...跳过长错误...
TypeError: unhashable type: 'list'
问题是:我已经尝试了以下许多其他事情。什么是按日计算单元格的最佳方法,其中列表中包含单个0(单元格值= [0])?
happyBarFrame[happyBarFrame['Sunday'].isin([[0]])]
- 不起作用
happyBarFrame[happyBarFrame['Sunday'].isin([0])]
- 没有工作
两者都给TypeError: unhashable type: 'list'
happyBarFrame['Sunday'].apply(lambda x : x == [0]).value_counts()[0]
工作但感觉不对!我可以迭代一周的日子,按天计算,然后构建我需要构建的直方图。但是必须有一个更好的方法,这看起来真的很低效,是真的吗?
编辑:修正了一个错误,需要在value_counts [0]中计算True,而不是False
答案 0 :(得分:1)
如果您只想将函数应用于数据框中的每个单元格,则可以使用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