如何创建Dataframe系列

时间:2017-05-01 19:22:52

标签: python pandas dataframe

我有一个Pandas系列对象的字典,我想把它变成一个Dataframe。每个系列的关键应该是列标题。单个系列重叠,但每个标签都是唯一的。

我以为我应该能够做到

df = pd.DataFrame(data)

但我一直收到错误InvalidIndexError: Reindexing only valid with uniquely valued Index objects

如果我尝试将每个系列变成一个框架,并使用pd.concat(data, axis=1),我会收到同样的错误。

如果考虑列标签,这没有意义。我做错了什么,我该如何解决?

1 个答案:

答案 0 :(得分:2)

我认为您需要reset_index drop=True Series dict s = pd.Series([1,4,5,2,0], index=[1,2,2,3,5]) s1 = pd.Series([5,7,8,1],index=[1,2,3,4]) data = {'a':s, 'b': s1} print (s.reset_index(drop=True)) 0 1 1 4 2 5 3 2 4 0 dtype: int64 df = pd.concat({k:v.reset_index(drop=True) for k,v in data.items()}, axis=1) print (df) a b 0 1 5.0 1 4 7.0 2 5 8.0 3 2 1.0 4 0 NaN print (s[~s.index.duplicated()]) 1 1 2 4 3 2 5 0 dtype: int64 df = pd.concat({k:v[~v.index.duplicated()] for k,v in data.items()}, axis=1) print (df) a b 1 1.0 5.0 2 4.0 7.0 3 2.0 8.0 4 NaN 1.0 5 0.0 NaN ,因为索引中有重复项:

print (s.groupby(level=0).mean())
1    1.0
2    4.5
3    2.0
5    0.0
dtype: float64

df = pd.concat({k:v.groupby(level=0).mean() for k,v in data.items()}, axis=1)
print (df)
     a    b
1  1.0  5.0
2  4.5  7.0
3  2.0  8.0
4  NaN  1.0
5  0.0  NaN

如果需要删除行,其中重复索引使用boolean indexingduplicated

$http

另一种解决方案:

setTimeout