Python 从数据帧列中减去序列
我正在从数据帧列中减去一个序列Python 从数据帧列中减去序列,python,pandas,subtraction,Python,Pandas,Subtraction,我正在从数据帧列中减去一个序列 df daily_return daily_weight 2003-01-01T 1.2 62 2003-01-02T 1.3 63 2003-01-03T 1.1 64 ... 和系列 Return 2003-01-01T 1.2
df
daily_return daily_weight
2003-01-01T 1.2 62
2003-01-02T 1.3 63
2003-01-03T 1.1 64
...
和系列
Return
2003-01-01T 1.2
2003-01-02T 1.3
2003-01-03T 1.1
...
索引是相同的日期时间索引。我使用以下sytnax:
df['Daily Return'].subtract(s['Return'],axis=0)
我得到的结果是:
ValueError: cannot reindex from a duplicate axis
我做错了什么?如果您正确定义了
df
和s
,那么您的逻辑运行良好:
idx = pd.Index(['2003-01-01T', '2003-01-02T', '2003-01-03T'])
df = pd.DataFrame.from_dict({'Daily Return': [1.2, 1.3, 1.1],
'daily_weight': [62, 63, 64]})
s = pd.DataFrame.from_dict({'Return': [1.2, 1.3, 1.1]})
df.index, s.index = idx, idx
print(df['Daily Return'].subtract(s['Return'],axis=0))
2003-01-01T 0.0
2003-01-02T 0.0
2003-01-03T 0.0
dtype: float64
谢谢大家
这实际上是一个数据问题。数据正在以某种方式进行转换,一个索引中的索引在导入时损坏。代码很好
如果可以的话,我会投我自己的一票。序列不能像那样被索引,如果你的序列被称为
s
,那么只要做减法(s,axis=0),如果我这样做,它超时并且不起作用。有趣的是,如果我这样做,df.join(s)
if会给我每天重复的索引值。但是索引是相同的。!!这和你原来的问题不同。我们可以考虑解决ValueError问题,不是吗?<代码>不能从重复轴< /代码>中重新索引。这通常意味着在索引中有DUPES。也许可以检查s.index.nunique()==len(s.index)
@randy-就是这样。这是一个糟糕的数据问题,与语法无关。非常感谢。在我的ide中,我的系列在这里指出它是一个“数据帧”。然而,根据我的经验,我认为列数据帧的行为就像一个系列。也许我还是做错了什么?如上所述,我尝试了将其作为一个系列(例如,s
)和一个数据帧(例如,s['Return']
)来处理的语法。无论哪种方式都失败了。