如何解决使用行条件获取最大值列
我想根据熊猫数据框中的2列获取最大值。我设法按1列而不是2列进行此操作。
对于1列:
import numpy as np
import pandas as pd
df = pd.DataFrame({"name": list("ABABCD"),"value": np.arange(6)})
maxes = df.groupby(["name"]).agg("max")
df["maxvalue"]=df["name"].apply(lambda x: maxes.loc[x])
>>> df
name value maxvalue
0 A 0 2
1 B 1 3
2 A 2 2
3 B 3 3
4 C 4 4
5 D 5 5
对于2列,我已经尝试过了,但是不起作用:
import numpy as np
import pandas as pd
df = pd.DataFrame({"name": list("ABABCD"),"name2": list("MNOMNO"),"value": np.arange(6)})
maxes = df.groupby(["name","name2"]).agg("max")
df["maxvalue"]=df[["name","name2"]].apply(lambda x: maxes.loc[x])
如何对多列进行此操作?
解决方法
使用transform
代替dates = pd.date_range('1/1/2000',periods=10)
data = {'date': dates}
df = pd.DataFrame.from_dict(data)
df['condition'] = [False,False,True,False]
df['desired_result']=pd.NaT
df2=df[df['condition']==True]
df3=df[df['condition']!=True]
df2.desired_result=df2.date.shift(1)
result=pd.concat([df2,df3]).sort_index()
print(result)
。使用一两列是完全相同的,对于两列,将如下所示:
pcase-let
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。