2017-02-24 950 views
1

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

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 

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") 

数据我想乘以电压列在当前列,并创建这些值的新列。

+1

当前的列你尝试'DF [ '目前'] * DF [ '电压']'? – EdChum

回答

3

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',...

3

你可以尝试这样的事情:

df['Power'] = df['current']*df['voltage'] 
+0

这个工作,但是无论如何写这个没有在列标题中键入,只是使用列数乘。 – acb

+0

@acb你是什么意思? – AsheKetchum

+0

对不起,我的实际数据有点混淆词,目前大约有10列。我想将每列乘以电压,并创建10个新的电源列。 – acb

相关问题