python - Pandas 从每行列表中减去相同的数字

标签 python pandas

我有 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

时间

enter image description here

关于python - Pandas 从每行列表中减去相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482927/

相关文章:

python - 使用 groupby 获取组中具有最大值的行

python - pandas 日期时间格式 删除时区

python - 无法在python中的selenium webdriver中加载firefox

python - 从输入中生成每个第 n 个值的列表

python - 对于 Matplotlib 图,如何隐藏刻度线但保留刻度标签?

python - 在 scipy 中指定 pdist 的缺失值

python - 如何将 python 连接到使用 docker 运行的 cassandra

python - 为索引连续 +/-1 的所有行过滤 pandas 数据帧

python - 删除具有相同日期时间的行

python - Pandas - 检查列标签是否存在于另一列的值中并更新该列