【问题标题】:Convert pandas dataframe into a list of unique tuple将 pandas 数据框转换为唯一元组列表
【发布时间】:2019-11-25 09:51:59
【问题描述】:

将 pandas 数据框转换为唯一元组列表的最有效方法是什么? 在下面的代码中,我试图提取一个包含所有唯一 PostalCodeAge 的元组列表。

from typing import NamedTuple, Sequence, Tuple

import pandas as pd

data = [["tom", 10, "ab 11"], ["nick", 14, "ab 22"], ["juli", 10, "ab 11"]]
people = pd.DataFrame(data, columns=["Name", "Age", "PostalCode"])

subset = pd.unique(people[["PostalCode", "Age"]].values.ravel())

# This produce an error
output = list(subset.itertuples(index=False))

# Expected output
# [('ab 11', 10), ('ab 22', 14)]

【问题讨论】:

  • ab 11ab 22 是邮政编码,但你说你想要独特的 NameAge
  • list(people.groupby(['PostalCode', 'Age']).groups) ..?

标签: python pandas dataframe tuples


【解决方案1】:

试试Groupby.groups:

list(people.groupby(['PostalCode', 'Age']).groups)

[出]

[('ab 11', 10), ('ab 22', 14)]

【讨论】:

  • 很好的方法 - 我会接受你的回答,但来自@AkshayNevrekar 的方法也很完美。
  • 谢谢@Michael。快乐编码
  • people.groupby(['PostalCode', 'Age']).first() 也会做同样的事情,将结果作为 DataFrame 返回。
【解决方案2】:

我认为你需要:

xyz = list(set((i,j) for i,j in zip(people["Age"], people["PostalCode"])))

print(xyz)

输出:

[(10, 'ab 11'), (14, 'ab 22')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2021-06-22
    • 2021-01-15
    • 2017-03-12
    • 2021-11-14
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多