Python 相乘的数据帧列的最大值
鉴于这些数据:Python 相乘的数据帧列的最大值,python,pandas,dataframe,max,multiple-columns,Python,Pandas,Dataframe,Max,Multiple Columns,鉴于这些数据: data = {'C1_IND' : [1,1,0,0,1], 'C1_PRICE' : [55,84,0,0,103], 'P1_IND' : [1,0,0,1,1], 'P1_PRICE' : [72,0,0,33,95]} df = pd.DataFrame(data) 如何在相同的数据帧中创建变量,即: max(C1_IND*C1_PRICE,P1_IND*P1_PRICE) 此外,如果该数据中存在空值,是否会有任何问题
data = {'C1_IND' : [1,1,0,0,1],
'C1_PRICE' : [55,84,0,0,103],
'P1_IND' : [1,0,0,1,1],
'P1_PRICE' : [72,0,0,33,95]}
df = pd.DataFrame(data)
如何在相同的数据帧中创建变量,即:
max(C1_IND*C1_PRICE,P1_IND*P1_PRICE)
此外,如果该数据中存在空值,是否会有任何问题 我认为您可以选择列,然后选择多个列。最后适用: 或: 它也可与
NaN
一起使用,但将参数skipna=False
添加到prod
:
data = {'C1_IND' : [1,1,0,0,1],
'C1_PRICE' : [55,84,0,0,8],
'P1_IND' : [1,0,0,1,10],
'P1_PRICE' : [72,0,0,33,np.nan]}
df = pd.DataFrame(data)
print (df)
C1_IND C1_PRICE P1_IND P1_PRICE
0 1 55 1 72.0
1 1 84 0 0.0
2 0 0 0 0.0
3 0 0 1 33.0
4 1 8 10 NaN
a = df.filter(like='C1').prod(1, skipna=False)
b = df.filter(like='P1').prod(1, skipna=False)
print (pd.DataFrame({'a':a,'b':b}))
a b
0 55 72.0
1 84 0.0
2 0 0.0
3 0 33.0
4 8 NaN
df['max'] = pd.DataFrame({'a':a,'b':b}).max(1)
print (df)
C1_IND C1_PRICE P1_IND P1_PRICE max
0 1 55 1 72.0 72.0
1 1 84 0 0.0 84.0
2 0 0 0 0.0 0.0
3 0 0 1 33.0 33.0
4 1 8 10 NaN 8.0
当你说max(C1_IND*C1_PRICE,P1_IND*P1_PRICE)
它们是如何按行或按列相乘的?
df['a'] = df.filter(like='C1').prod(1)
df['b'] = df.filter(like='P1').prod(1)
df['max'] = df[['a','b']].max(1)
df = df.drop(['a','b'], axis=1)
print (df)
C1_IND C1_PRICE P1_IND P1_PRICE max
0 1 55 1 72 72
1 1 84 0 0 84
2 0 0 0 0 0
3 0 0 1 33 33
4 1 103 1 95 103
data = {'C1_IND' : [1,1,0,0,1],
'C1_PRICE' : [55,84,0,0,8],
'P1_IND' : [1,0,0,1,10],
'P1_PRICE' : [72,0,0,33,np.nan]}
df = pd.DataFrame(data)
print (df)
C1_IND C1_PRICE P1_IND P1_PRICE
0 1 55 1 72.0
1 1 84 0 0.0
2 0 0 0 0.0
3 0 0 1 33.0
4 1 8 10 NaN
a = df.filter(like='C1').prod(1, skipna=False)
b = df.filter(like='P1').prod(1, skipna=False)
print (pd.DataFrame({'a':a,'b':b}))
a b
0 55 72.0
1 84 0.0
2 0 0.0
3 0 33.0
4 8 NaN
df['max'] = pd.DataFrame({'a':a,'b':b}).max(1)
print (df)
C1_IND C1_PRICE P1_IND P1_PRICE max
0 1 55 1 72.0 72.0
1 1 84 0 0.0 84.0
2 0 0 0 0.0 0.0
3 0 0 1 33.0 33.0
4 1 8 10 NaN 8.0