gpt4 book ai didi

python - 值错误 : too many values to unpack when using itertuples() on pandas dataframe

转载 作者:行者123 更新时间:2023-11-28 17:27:17 25 4
gpt4 key购买 nike

我正在尝试根据我在此处找到的答案将一个简单的 pandas 数据框转换为一个嵌套的 JSON 文件:pandas groupby to nested json

我的分组数据框如下所示:

                  firstname lastname  orgname         phone        mobile  email
teamname members
1 0 John Doe Anon 916-555-1234 none john.doe@wildlife.net
1 Jane Doe Anon 916-555-4321 916-555-7890 jane.doe@wildlife.net
2 0 Mickey Moose Moosers 916-555-0000 916-555-1111 mickey.moose@wildlife.net
1 Minny Moose Moosers 916-555-2222 none minny.moose@wildlife.net

我的代码是:

data = pandas.read_excel(inputExcel, sheetname = 'Sheet1', encoding = 'utf8')
grouped = data.groupby(['teamname', 'members']).first()

results = defaultdict(lambda: defaultdict(dict))

for index, value in grouped.itertuples():
for i, key in enumerate(index):
if i ==0:
nested = results[key]
elif i == len(index) -1:
nested[key] = value
else:
nested = nested[key]

print json.dumps(results, indent = 4)

我在第一个“for”循环中得到以下错误。在这种情况下是什么原因导致此错误以及如何修复它以输出嵌套的 json?

    for index, value in grouped.itertuples():
ValueError: too many values to unpack

最佳答案

使用 itertuples() 时,索引作为元组的一部分包含在内,因此 for index, value in grouped.itertuples(): 没有任何意义。事实上,itertuples() 使用 namedtuple Index 是名称之一。

考虑以下设置:

data = {'A': list('aabbc'), 'B': [0, 1, 0, 1, 0], 'C': list('vwxyz'), 'D': range(5,10)}
df = pd.DataFrame(data).set_index(['A', 'B'])

生成以下 DataFrame:

     C  D
A B
a 0 v 5
1 w 6
b 0 x 7
1 y 8
c 0 z 9

然后在 df.itertuples() 中打印每个元组产生:

Pandas(Index=('a', 0), C='v', D=5)
Pandas(Index=('a', 1), C='w', D=6)
Pandas(Index=('b', 0), C='x', D=7)
Pandas(Index=('b', 1), C='y', D=8)
Pandas(Index=('c', 0), C='z', D=9)

所以,您可能想要做的是类似于下面的代码,将 value 替换为 t[1:]:

for t in grouped.itertuples():
for i, key in enumerate(t.Index):
...

如果您想访问 namedtuple 的组件,您可以按位置或按名称访问内容。因此,对于您的 DataFrame,t[1]t.firstname 应该是等效的。请记住 t[0] 是索引,因此您的第一列从 1 开始。

关于python - 值错误 : too many values to unpack when using itertuples() on pandas dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com