【问题标题】:subtract dataframes with different dimentions减去不同维度的数据框
【发布时间】:2017-11-12 20:38:24
【问题描述】:

有没有办法减去不同维度的数据框? 我有带有 [300X1] 的 A 和带有 [300X188] 数据帧的 B。我想将 A 列减去所有 B 列值。 我尝试了一个 while 循环来一次减去 B 矩阵 1 列,但出现错误说 TypeError: unhashable type: 'slice'。

这样的……

A  B
8  1 2 3 4 5
9  2 2 3 4 5 
9  3 2 3 4 5   
6  4 2 3 4 5 
8  5 2 3 4 5 

输出:

New Table
7 6 5 4 3
7 7 6 5 4
6 7 6 5 4
2 4 3 2 1
3 6 5 4 3 

【问题讨论】:

  • 请贴出您所提到的错误代码。
  • 试试A[:, np.newaxis] - B。这适用于 A = np.arange(5)B = np.arange(25).reshape(5, 5)A 的形状是 (5, ),而不是 (5, 1))。
  • @Michael 我试过了,我得到一个错误提示 TypeError: unsupported operand type(s) for -: 'str' and 'int'。我认为在 python 3 A 中以字符串形式返回而不是整数。我试图通过 int(A) 将 A 转换为整数并得到另一个错误:只有长度为 1 的数组可以转换为 Python 标量。有没有办法解决这个问题?
  • 这些错误不会出现在我的示例中,np.arange 是一个 dtype 为 int 的数组。顺便说一句,我使用的是 Python 3.4,所以这不是 Python 3 的错误。向我们展示一个会产生错误的最小工作示例。

标签: python multidimensional-array dataframe slice


【解决方案1】:

您可以将数据框转换为 numpy 数组

new_table = pd.DataFrame(A.values - B.values)

print(new_table)

输出:

   0  1  2  3  4
0  7  6  5  4  3
1  7  7  6  5  4
2  6  7  6  5  4
3  2  4  3  2  1
4  3  6  5  4  3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-28
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2020-09-16
    相关资源
    最近更新 更多