pandas 如何将Dataframe的两列相乘?[duplicate]

hrirmatl  于 2023-02-28  发布在  其他
关注(0)|答案(2)|浏览(174)
    • 此问题在此处已有答案**:

Change column type in pandas(16个答案)
5天前关闭。
下午好,我正在尝试将dataframe (C)的两列相乘。并将结果添加到新列中。我尝试了不同的方法,但都不起作用。我遇到的最常见错误是:

TypeError: can't multiply sequence by non-int of type 'float'

a i要相乘的列是:H04_PEDRO_MARINSS(mg/l)。另外,我还想创建一个包含结果的新列。

C:
                H04_PEDRO_MARIN SS(mg/l)  multiplication
Fecha
26/07/11 14:00         0.000000     80.4        0.000000
26/07/11 15:00         0.000000     76.1        0.000000
26/07/11 16:00         0.000000        0        0.000000
26/07/11 17:00         0.000000        0        0.000000
26/07/11 18:00         0.000000        0        0.000000
...                         ...      ...             ...
12/04/12 10:00      9430.166667    61.18     9430.166667
12/04/12 11:00      9430.166667    60.05     9430.166667
12/04/12 12:00      9430.166667    59.43     9430.166667
12/04/12 14:00      9430.166667    56.98     9430.166667

[11568 rows x 3 columns]

我试过:

C['multiplicaction'] = C['H04_PEDRO_MARIN'][1])*(C['SS(mg/l)'])

还有

cols = ['H04_PEDRO_MARIN','SS(mg/l)']
C['multiplication'] = C[cols].prod(axis=1)

而且不工作
甚至我试过在不同的 Dataframe 中分开两列,然后相乘,但还是不行。
谢谢你的任何解决办法。

rwqw0loc

rwqw0loc1#

您可以执行以下操作:

import pandas as pd

data = {
    'H04_PEDRO_MARIN': [0.0, 0.0, 0.0, 0.0, 0.0, 9430.166667, 9430.166667, 9430.166667, 9430.166667],
    'SS(mg/l)': [80.4, 76.1, 0.0, 0.0, 0.0, 61.18, 60.05, 59.43, 56.98]
}
C = pd.DataFrame(data, index=['26/07/11 14:00', '26/07/11 15:00', '26/07/11 16:00', '26/07/11 17:00', '26/07/11 18:00', '12/04/12 10:00', '12/04/12 11:00', '12/04/12 12:00', '12/04/12 14:00'])

C['multiplication'] = C['H04_PEDRO_MARIN'] * C['SS(mg/l)']

print(C)

它给出了

H04_PEDRO_MARIN  SS(mg/l)  multiplication
26/07/11 14:00         0.000000     80.40        0.000000
26/07/11 15:00         0.000000     76.10        0.000000
26/07/11 16:00         0.000000      0.00        0.000000
26/07/11 17:00         0.000000      0.00        0.000000
26/07/11 18:00         0.000000      0.00        0.000000
12/04/12 10:00      9430.166667     61.18   576937.596687
12/04/12 11:00      9430.166667     60.05   566281.508353
12/04/12 12:00      9430.166667     59.43   560434.805020
12/04/12 14:00      9430.166667     56.98   537330.896686

如果数据类型有问题,请更改为

C['H04_PEDRO_MARIN'] = pd.to_numeric(C['H04_PEDRO_MARIN'], errors='coerce')
C['SS(mg/l)'] = pd.to_numeric(C['SS(mg/l)'], errors='coerce')
C['multiplication'] = C['H04_PEDRO_MARIN'] * C['SS(mg/l)']
pnwntuvh

pnwntuvh2#

检查列的类型:C.info()。要解决类型错误:无法将sequence乘以类型为float的non-int错误,请在将字符串乘以float之前将其转换为浮点数。如果在将字符串“3”乘以浮点数3.3之前将其转换为float,则不会出现错误。

相关问题