我正在制作一个python代码,该代码首先将分钟数据平均为小时数据。然后,我想将小时数据的两列中的值相乘,并用相乘后的值创建一个新列。我被困在乘法步骤上。

import pandas as pd
import numpy as np

df = pd.read_csv("inputfile.csv", index_col="DateTime", parse_dates=True)
df = df.resample('1H').mean()
df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1H"))
df.to_csv('outputfile.csv', index=True, index_label="DateTime")

来自每小时平均值的数据
DateTime        current     voltage
11/1/2014 0:00  3.366184207 12.1758535
11/1/2014 1:00  3.361604775 12.1827364
11/1/2014 2:00  3.358049691 12.17596822
11/1/2014 3:00  3.354833198 12.1827364
11/1/2014 4:00  3.361096907 12.1827364
11/1/2014 5:00  3.361096907 12.1827364
11/1/2014 6:00  3.366344918 15.72258904
11/1/2014 7:00  3.419681019 1495.925115
11/1/2014 8:00  3.663316184 1870.538086
11/1/2014 9:00  4.369056237 1925.408667
11/1/2014 10:00 4.404945809 1938.888254
11/1/2014 11:00 4.711192238 1994.759897
11/1/2014 12:00 4.82263279  1995.281601
11/1/2014 13:00 4.428242773 1961.089536
11/1/2014 14:00 4.038091129 1895.686707
11/1/2014 15:00 4.04098199  1904.352924
11/1/2014 16:00 3.748518044 1852.646768
11/1/2014 17:00 3.397967499 1554.434254
11/1/2014 18:00 3.371380174 56.24243593
11/1/2014 19:00 3.375613815 12.18733199
11/1/2014 20:00 3.369686692 12.18239812
11/1/2014 21:00 3.367993271 12.18351949
11/1/2014 22:00 3.374089682 12.17048603
11/1/2014 23:00 3.367485231 12.18946266

我想将当前列乘以电压列,并用这些值创建一个新列。

最佳答案

df[newcolumn] = df['current']*df['voltage']将工作。
您可以命名提供newcolumn作为变量。

def getPower(df, newColumn, numOfCol):
    for i in range(numOfCol):
        current = 'current#%d' % (i+1)
        voltage = 'voltage#%d' % (i+1)
        power   = 'power#%d' % (i+1)
    df[power] = df[current]*df[voltage]

getPower(df, 'Power', numOfCols) would create the column.

编辑:如果您将当前列命名为'current1', current2',...,则此方法有效

10-06 10:25