Python 数据帧创建-重新索引
我在《熊猫》中不断发现这个错误:Python 数据帧创建-重新索引,python,numpy,dictionary,pandas,Python,Numpy,Dictionary,Pandas,我在《熊猫》中不断发现这个错误: raise Exception('Reindexing only valid with uniquely valued Index ' Exception: Reindexing only valid with uniquely valued Index objects 我理解,如果试图从字典中生成DataFrame时列名相同,就会发生这种情况 然而,我的不是 这是我正在使用的字典-看起来像这样-非常像教程中给出的,不起作用: d = {'Sample1':
raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects
我理解,如果试图从字典中生成DataFrame
时列名相同,就会发生这种情况
然而,我的不是
这是我正在使用的字典-看起来像这样-非常像教程中给出的,不起作用:
d = {'Sample1': 4.121025 0.306828
4.119957 0.335473
4.096208 0.331831
...
0.824808 0.366679
0.745721 0.586742
Length: 406, 'Sample2': 3.444444 0.937468
3.315508 0.855920
...
0.928144 0.236640
0.918519 0.232346
Length: 991}
这是我用来生成此词典的代码,其中一些细节并不相关,但spec.Y和spec.X只是numpy数组:
d = dict()
for tab in self.tab_list:
spec = tab.temp_spectra
name = str(spec.spectra_name)
d[name] = pd.Series(spec.Y, index=spec.X)
print(name)
print(d)
df = pd.DataFrame(d)
print(df)
你知道为什么会出现这个错误,这样我就可以知道该怎么解决了吗?列名似乎不是它,我是在假设索引可以匹配或不匹配的情况下操作的-这不重要-这就是为什么我要使用这个包。我想要“hashtable”类型的感觉,X数组可以不同,也可以相同,重叠将把值放在同一行中,或者如果需要,创建一个新行,以便可以一起查看
编辑:
我发现解决方案与我的一个数据集的索引中的一个重复条目有关(我的一个数据集是通过手工跟踪在plotly上创建的,因此一个X值有两个Y值)。
在回答我自己的问题时,我将举几个例子。始终检查一个X值是否有两个Y值,或者一个数据帧的每个索引是否有两个值。 我通过在plotly上手动跟踪一个图形并创建数据,得到了其中一个数据集,该数据集为一个X提供了2y值 举例说明: 下面是一个可编译的小脚本:
import pandas as pd
import numpy as np
def f(i):
return np.random.rand(i,)
# number of points in two spectra (two separate spectra of different length)
# possibly obtained on different equipment such that the pixels/values don't align
n1 = 450
n2 = 950
X1 = np.sort(f(n1))
X2 = np.sort(f(n2))
Y1 = f(n1)
Y2 = f(n2)
# make dataframe from the spectra
d = dict()
d['1'] = pd.Series(Y1, index=X1)
d['2'] = pd.Series(Y2, index=X2)
print(d)
df = pd.DataFrame(d)
print(df)
这里有一个不是,并返回我得到的错误:
import pandas as pd
import numpy as np
def f(i):
return np.random.rand(i,)
# number of points in two spectra (two separate spectra of different length)
# possibly obtained on different equipment such that the pixels/values don't align
n1 = 450
n2 = 950
# store X array to duplicate a value within it
X_ = f(n1)
X1 = np.sort(np.append(X_,X_[0]))
X2 = np.sort(f(n2))
Y_ = f(n1)
Y1 = np.append(Y_,Y_[0])
Y2 = f(n2)
# make dataframe from the spectra
d = dict()
d['1'] = pd.Series(Y1, index=X1)
d['2'] = pd.Series(Y2, index=X2)
print(d)
df = pd.DataFrame(d)
print(df)
你能提供一个重复的例子来说明错误吗?谢谢你的评论!我通常准备一个小的可编译的示例来尝试复制错误,但这次我无法找出错误所在,因为我编写的小的可编译脚本可以完全工作。因此,这是我的特定数据类型或一些神秘的东西,我还没有弄明白。我希望有人对这类问题有经验或见解,能提出一些建议。我现在正在添加一个小的可编译脚本。