从 df
创建了两个系列:s1
和 s2
。
每个都有相同的长度但不同的索引。 s1.multiply(s2)
合并不匹配的索引,而不是与它们相乘。
我只想将 s1
与 s2
相乘,忽略不匹配的索引。
我可以运行 s1.reset_index()
和 s2.reset_index()
然后从这两个 dfs 中取出我想要的列,因为它将原始索引转换为一个单独的专栏,但这很乏味,我认为可能有更简单的方法来做到这一点。
s1.multiply(s2, axis='columns')
好像也没用
最佳答案
我认为使用 reset_index()
是正确的方法,但是有一个选项可以删除索引,而不是将其推回数据框。
像这样:
s1 = pd.Series([1,2,3,4,5,6,7], index=[52,34,3,53,636,7,4])
52 1
34 2
3 3
53 4
636 5
7 6
4 7
dtype: int64
s1.reset_index(drop=True)
0 1
1 2
2 3
3 4
4 5
5 6
6 7
dtype: int64
我之所以赞成 reset_index()
方法,而不是其他建议的简单乘以值的方法
s1 * s2.values
就是这个不是很明确。这一行并没有告诉我您正在解决一个索引问题。
虽然这一行非常明确地说明了您正在解决索引问题:
s1.reset_index(drop=True) * s2.reset_index(drop=True)
或者将其分解为多行:
s1.reset_index(inplace=True, drop=True)
s2.reset_index(inplace=True, drop=True)
s1 * s2
关于python - 将两个指数不匹配的 Pandas 系列相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708959/