首页 > 解决方案 > 将数字熊猫中的每个数字相乘

问题描述

我正在解决一个问题,以帮助更好地使用 Python/Pandas 进行编码,但我被困在这种情况下。

这是更好描述的表格

第 1 步:将每个单独的字符乘以给定的数字。

第 2 步:将结果相加以创建总和。

第 3 步:从最接近的等于或高于十的倍数中减去总和。

我想对系列中的数字执行此操作。例如:系列=[123456789012],[02345434225],[2349349723]

标签: pythonpandasnumpy

解决方案


Setup

df = pd.DataFrame([
    [6, 2, 9, 1, 0, 4, 1, 5, 0, 0, 2, 1],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2]
]).add_prefix('N')

a = np.array([1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3])

Solution

  • Multiply by an array broadcast over rows
  • Sum over rows
  • Modulo 10
  • Assign to a new column

df.assign(Check=(df * -a).sum(1).mod(10))

   N0  N1  N2  N3  N4  N5  N6  N7  N8  N9  N10  N11  Check
0   6   2   9   1   0   4   1   5   0   0    2    1      3
1   1   2   3   4   5   6   7   8   9   0    1    2      8

推荐阅读