首页 > 解决方案 > 对包含元组列表的 pandas DataFrame 列中的第一个元素求和返回 ValueError

问题描述

我有一个 pandas DataFrame,它有一列包含一个元组列表。对于DataFrame的每一行,我想获得元组的第一个元素等于1的总次数。

假设我的 DataFrame 如下所示:

df = pandas.DataFrame({"id": [1, 2, 3],
                       "tuple_list": [[(1, 3), (1, 46), (4, 5)], [(2, 2), (1, 4)], [(3, 5), (69, 4)]]})

我希望生成的 DataFrame 看起来像这样:

{"id": [1, 2, 3],
 "tuple_list": [[(1, 3), (1, 46), (4, 5)], [(2, 2), (1, 4)], [(3, 5), (69, 4)]],
 "first_1": [2, 1, 0]}

我试过这个:

df["first_1"] = sum(i == 1 for i, _ in df["tuple_list"])

但这给出了:

ValueError: too many values to unpack (expected 2)

如何解决这个问题?我不允许在求和操作中使用这样的 DataFrame 列吗?

标签: python-3.xpandassum

解决方案


您可以使用apply

df["tuple_list"].apply(lambda x: sum(i[0] == 1 for i in x))

推荐阅读