底线问题:
这很丑吧?对于熊猫数据框:happyBarFrame['Sunday'].apply(lambda x : x == [0]).value_counts()[0]
加长版:我试图在熊猫数据框中找到“空”值的总和。条目为[0]时为空-列表。
我猜最好的解决方案是不要在数据帧单元格中使用列表[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)的错误
最佳答案
如果您只想对数据框中的每个单元格应用函数,则可以使用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 - 在Pandas Dataframe单元中找到[Python列表]的匹配值总和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40336031/