我不明白为什么我的代码不起作用。

如果执行以下代码,则会出现以下错误:

pandas.core.indexes.base.InvalidIndexError:仅对具有唯一值的Index对象有效的索引。

创建的系列具有所有时间戳索引,其中某些条目相同。 我不了解与《熊猫手册》中的示例的区别是什么,因为dfs的索引也具有相同的索引。

ds = pd.Series([dat[1] for dat in dic_data[name]], index=[dat[0] for dat in dic_data[name]], name=name) # create the series
ds_list.append(ds)


df = pd.concat(ds_list,axis=1,sort=False) # i copyed this line from the example, from the pandas manual

生成的数据框应与示例图片中的数据框一样创建

#1楼 票数:0

在pandas的示例中,您可以有一个pandas.Series ,它的索引值与要连接的另一个值相同或相似。 但是,每个pandas.Series索引值都必须是唯一的。

len(ds.index) - len(ds.index.unique()) 等于0

您在ds中的索引具有多个相同的值。 如果要基于index进行串联,则不清楚如何将这些索引与另一个pandas.Series结合使用,因此会收到错误消息。

例如,如果每个ds具有唯一的索引,则您的代码将起作用。

ds_list = []
dates =  pd.date_range(start='1/1/2019', periods=7); values = np.arange(7)
dic_data = {'Col1' : [(dates[i], values[i]) for i in range(7)], 'Col2' : [(dates[i], values[i]*2) for i in range(7)]}
for name in dic_data.keys():
    ds = pd.Series([dat[1] for dat in dic_data[name]], index=[dat[0] for dat in dic_data[name]], name=name)
    ds_list.append(ds)

df = pd.concat(ds_list,axis=1,sort=False)
In [43]: df
Out[43]:
            Col1  Col2
2019-01-01     0     0
2019-01-02     1     2
2019-01-03     2     4
2019-01-04     3     6
2019-01-05     4     8
2019-01-06     5    10
2019-01-07     6    12

但是,如果您的ds具有重复的索引值,则不会:

dic_data = {'Col1' : [(dates[i % 7], values[i % 7]) for i in range(12)], 'Col2' : [(dates[i], values[i]*2) for i in range(7)]}
for name in dic_data.keys():
    ds = pd.Series([dat[1] for dat in dic_data[name]], index=[dat[0] for dat in dic_data[name]], name=name)
    ds_list.append(ds)

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

作为解决方法,我将通过例如进行groupby依据来汇总时间戳记,或者您希望对这些重复项进行汇总:

dic_data = {'Col1' : [(dates[i % 7], values[i % 7]) for i in range(12)], 'Col2' : [(dates[i], values[i]*2) for i in range(7)]}
for name in dic_data.keys():
    ds = pd.Series([dat[1] for dat in dic_data[name]], index=[dat[0] for dat in dic_data[name]], name=name)
    ds = ds.groupby(level=0).sum()
    ds_list.append(ds)

或者您可以删除重复项,例如ds.drop_duplicates() ...

  ask by v1cF1rD translate from so

未解决问题?本站智能推荐:

1回复

pd.Series的串联会导致pandas.core.indexes.base.InvalidIndexError

我不明白为什么我的代码不起作用。 如果执行以下代码,则会出现以下错误: pandas.core.indexes.base.InvalidIndexError:仅对具有唯一值的Index对象有效的索引。 创建的系列具有所有时间戳索引,其中某些条目相同。 我不了解与《熊猫手
2回复

查找 pd.Series 的长度并去掉最后两个字符 Pandas

我知道我可以通过使用pd.Series.str.len()找到 pd.Series 的长度,但是有没有办法pd.Series.str.len()最后两个字符? 我知道我们可以使用 Python 来实现这一点,但我很好奇是否可以在 Pandas 中完成。 例如: 会结束于: 任何见解将不胜感
1回复

如何将对象的类型从“pandas.core.groupby.generic.SeriesGroupBy”转换为“pandas.core.series.Series”?

我有一个类型为“pandas.core.groupby.generic.SeriesGroupBy”的变量,我从对熊猫数据框的各个字段进行分组得到。 但是,我想将该变量转换为一个工作正常但有很多错误的熊猫系列。 这是我尝试过的代码: 当我尝试运行此代码时,它需要花费大量时间来执行并产生大量错误
2回复

使用另一个数组应用函数如何在 pandas.Series 中作为参数

有办法使用另一个pandas.Series不同值在pandas.Series应用函数吗? 我知道有pandas.Series.apply() ,但我需要这样的东西: 换句话说,我需要在pandas.DataFrame列中应用一个函数,因为我需要使用另一列相同的pandas.DataFrame 。
1回复

将 Pandas 系列转换为 Set 用逗号串联拆分值

我是熊猫的新手。 我想获取一些从 pandas 系列返回的字符串(名为“lots”的 csv 列下的一堆值)并将它们放入一个集合中。 为此,我写了以下内容: 但是该打印语句产生的输出采用该系列中的一个值,如“OP”,并将其显示为 136 {P, O}。 它不仅不会分裂它,而且会逆转它。 返回的
1回复

使用熊猫行为异常的两个布尔Series对象之间的运算符

我有两个大熊猫系列。 两者都是布尔数组,mask仅为False,而t包含一些True值 我希望当我应用pandas OR运算符时,| ,我将得到7724的总和,并且该运算符是可交换的。 但是,我得到以下结果: 这是一个错误吗?
2回复

在Pandas数据框或系列中过滤值

我正在尝试从pandas Dataframe中的列中过滤值,但是我似乎正在接收布尔值而不是实际值。 我正在尝试按月份和年份过滤数据。 在下面的代码中,您将看到我仅按年份过滤,但是我以不同的方式多次尝试了月份和年份:
1回复

将 Pandas 系列作为一行添加到 Pandas DataFrame

我正在尝试将Pandas.Series作为新行添加到Pandas.DataFrame 。 但是,系列似乎总是添加,其索引显示为单独的行。 我们如何将其附加为单行? 预期结果 尝试 1 尝试#2 尝试 #3
1回复

用于将 Pandas 数据帧转换为嵌套 json 的数据帧查询

提前感谢您的所有帮助。 我只是在 Python 编程方面有所进步,需要您帮助将数据帧转换为 json。 我有以下数据框列和行,如下所示。 我试图按如下方式创建 json, 这是尝试生成json的代码, 不幸的是,我无法弄清楚以下内容, 如何将timestamp和offset附加到
2回复

pandas将dataframe列单元格初始化为空列表

我需要将DataFrame列中的单元格初始化为lists 。 我想知道在时间效率方面有更好的方法吗?