[英]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.