我有 pandas 数据框:
df1['A'].ix[1:3]
2017-01-01 02:00:00 [33, 34, 39]
2017-01-01 03:00:00 [3, 43, 9]
df2['B'].ix[1:3]
2017-01-01 02:00:00 2
2017-01-01 03:00:00 3
我要执行以下操作:
difference = df1 - df2
预期结果是:
(df1 - df2).ix[1:3]
2017-01-01 02:00:00 [31, 32, 37]
2017-01-01 03:00:00 [0, 40, 6]
即从 df1
df2
中的数字
df1
的每个列表都具有相同的大小。
我想不出比列表理解
更好的方法。
最佳答案
我无法分辨df1
中的对象是什么。可能是 list
或者 np.array
? IDK?
最好我创建自己的示例
A = pd.Series([[33, 34, 39], [3, 43, 9]])
B = pd.Series([2, 3])
选项 1
应用(np.asarray)
A.apply(np.asarray) - B
0 [31, 32, 37]
1 [0, 40, 6]
dtype: object
选项 2
更丑但更快,见下文
pd.Series((np.array(A.values.tolist()) - B.values[:, None]).tolist(), A.index)
0 [31, 32, 37]
1 [0, 40, 6]
dtype: object
时间
关于python - Pandas 从每行列表中减去相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482927/