繁体   English   中英

pd.Series 的 defaultdict

[英]defaultdict of pd.Series

以下代码的结果不符合我的期望。

import numpy as np
import pandas as pd
from collections import defaultdict

t_dict = {'a_b': pd.Series(np.arange(3))}
t_def_dict = defaultdict(pd.Series)
for k, v in t_dict.items():
    x, y = k.split('_')
    t_def_dict[y] += v

我有一个空系列,而我的期望是 pd.Series(0, 1, 2)

> t_def_dict     # expect pd.Series(0, 1, 2)
  defaultdict(pandas.core.series.Series, {'b': Series([], dtype: float64)})
  

我的问题是为什么会这样以及如何修改它以满足期望?

我认为您将列表的加号运算符(进行连接)与系列的加号运算符混淆了,后者进行元素加法:

print(pd.Series(np.arange(3)) + pd.Series(np.arange(5)))

0    0.0
1    2.0
2    4.0
3    NaN
4    NaN

从上面的例子可以看出,如果你从空系列开始,你会得到一个空系列,因为左操作数的大小就是结果的大小。

要实现您想要的,您可能需要 go 和Series.append

t_def_dict[y] = t_def_dict[y].append(v)

导致:

defaultdict(<class 'pandas.core.series.Series'>, {'b': 0    0
1    1
2    2
dtype: int64})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM