pandas Python 代码将两列相乘,然后用值创建新列
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/42443974/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Python code to multiply two columns and then create new column with values
提问by acb
I am making a python code that first averages minute data into hourly data. I then want to multiply the values in the two columns in the hourly data and create a new column with the multiplied values. I am stuck on the multiplication step.
我正在制作一个 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")
Data from hourly averages
来自每小时平均值的数据
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
I would like to multiply the current column by voltage column and create a new column with those values.
我想将当前列乘以电压列并使用这些值创建一个新列。
回答by Chirag
You can try something like this:
你可以尝试这样的事情:
df['Power'] = df['current']*df['voltage']
回答by AsheKetchum
df[newcolumn] = df['current']*df['voltage']
will work.
You can name provide newcolumn as a variable.
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.
EDIT: This will work if you named your current columns like 'current1', current2',...
编辑:如果您将当前列命名为'current1', current2',...