gpt4 book ai didi

python - Pandas 数据框列的最大值相乘

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:23 24 4
gpt4 key购买 nike

鉴于此数据:

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)

此外,如果该数据中存在空值,是否会有任何问题?

最佳答案

我认为您可以通过 filter 选择列, 然后乘以 prod .最后申请 max :

a = df.filter(like='C1').prod(1)
b = df.filter(like='P1').prod(1)
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 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

或者:

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

它也适用于 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

关于python - Pandas 数据框列的最大值相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39410335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com