python-3.x - 对包含元组列表的 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 列吗?
解决方案
您可以使用apply
df["tuple_list"].apply(lambda x: sum(i[0] == 1 for i in x))