【Pandas】对比两列取最大值生成新的一列

【Pandas】对比两列取最大值生成新的一列

问题:

假设 dataframe 中有如下两列,如何生成第三列 best,其值取scheme1与scheme2 对应的最大值
在这里插入图片描述

解决方法:

df['best'] = df[['Scheme1', 'Scheme2']].max(axis=1)
df['best'] = df[['Scheme1', 'Scheme2']].apply(max, axis=1)
df['best'] = df.loc[:,['Scheme1','Scheme2']].max(axis=1)
df = df.assign( best = df[['Scheme1', 'Scheme2']].max(1))

结果:

在这里插入图片描述

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会根据你的要求来回答你的问题。 首先,以下是代码实现: ```python import csv import random from datetime import datetime, timedelta import pandas as pd import matplotlib.pyplot as plt # 创建模拟数据并写入csv文件 with open('data.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['date', 'amount']) start_date = datetime(2023, 1, 1) end_date = datetime(2023, 12, 31) date_range = (end_date - start_date).days + 1 for i in range(date_range): date = start_date + timedelta(days=i) amount = random.randint(300, 600) writer.writerow([date.strftime('%Y-%m-%d'), amount]) # 读csv文件并创建DataFrame df = pd.read_csv('data.csv', parse_dates=[0], index_col=[0]) # 删除缺失 df.dropna(inplace=True) # 统计每月销量 monthly_sales = df.resample('M').sum() # 生成折线图并保存 plt.plot(monthly_sales.index, monthly_sales['amount']) plt.title('Monthly Sales in 2023') plt.xlabel('Month') plt.ylabel('Amount') plt.savefig('month_amount_bar.png') # 找出相邻两个月最大涨幅,并将涨幅最大的月份写入文件 max_increase = 0 max_month = '' for i in range(1, len(monthly_sales)): increase = monthly_sales.iloc[i]['amount'] - monthly_sales.iloc[i-1]['amount'] if increase > max_increase: max_increase = increase max_month = monthly_sales.index[i].strftime('%Y-%m') with open('maxMonth.txt', 'w') as file: file.write(max_month) ``` 解释一下代码的实现过程: 首先,我们使用csv、random和datetime模块生成模拟数据,并将其写入data.csv文件中。我们使用datetime模块生成日期,使用random模块生成销量数据,然后使用csv模块将其写入csv文件中。 接下来,我们使用pandas模块读csv文件,并创建一个DataFrame数据结构。我们使用parse_dates参数将date列解析为日期类型,使用index_col参数将其设置为索引列。然后,我们使用dropna方法删除DataFrame中的所有缺失。 接着,我们使用resample方法对DataFrame进行重采样,统计每月销量,并将其保存为一个DataFrame monthly_sales。 然后,我们使用matplotlib模块生成折线图并将其保存为month_amount_bar.png文件。我们使用plot方法绘制折线图,使用title方法设置标题,使用xlabel和ylabel方法设置x轴和y轴标签,最后使用savefig方法保存图像。 最后,我们找出相邻两个月中销量最大的涨幅,并将涨幅最大的月份写入文件maxMonth.txt中。我们使用一个for循环遍历monthly_sales中的每个月份,并计算相邻两个月的涨幅。我们使用一个变量max_increase记录最大涨幅,使用一个变量max_month记录涨幅最大的月份。最后,我们将max_month写入文件maxMonth.txt中。 希望我的回答能够帮助到你,如果有任何问题或疑问,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何为xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值