我正在制作一个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',...
,则此方法有效