【如果对您有用,请关注并转发,谢谢~~】
最近在处理气象类相关数据的空间计算,在做综合性计算的时候,DataFrame针对每列的统计求和、最大值等较为方便,对某行的两列或多列数据进行求和与最大值等的简便方法(方案二),方案一是使用传统循环方法计算。
采用以下测试数据,用前3列求红色区域两列数据。
方案一
使用传统每行的进行循环计算求和与最大值
import pandas as pd
# 设置测试样例数据
df = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90],"prices": [120, 110, 100, 90, 150, 90] }
)
# 创建求和与最大值列
df['Total'] = None
df['Max'] = None
df
# 给每列设置index
index_selling=df.columns.get_loc('Units')
index_cost=df.columns.get_loc('prices')
index_total=df.columns.get_loc('Total')
index_max=df.columns.get_loc('Max')
# 循环每行进行求和
for row in range(0, len(df)):
df.iat[row, index_total] = df.iat[row,index_selling] + df.iat[row, index_cost]
if df.iat[row, index_selling] > df.iat[row, index_cost]:
df.iat[row, index_max] = df.iat[row, index_selling]
else:
df.iat[row, index_max] = df.iat[row, index_cost]
df
方案二
采用Dataframe的对2列或多列需要先转置再计算,然后进行求和与最大值。df.max()默认对每一列取最大值。
import pandas as pd
# 设置测试样例数据
df = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90],"prices": [120, 110, 100, 90, 150, 90] }
)
# 核心关键,计算多列数据求和与最大值
df["Total"]=df.loc[:,["Units","prices"]].T.sum()
df["Max"]=df.loc[:,["Units","prices"]].T.max()
df