python - 根据 pandas 中的列查找最小值
问题描述
我的数据看起来像这样
data = [['29/10/18', 'EDF', 'Online', 400, 500, 300],
['29/10/18', 'EDF', 'Standard', 200, 100, 300],
['29/10/18', 'NPower', 'Saver', 600, 500, 700],
['30/10/18', 'British Gas', 'Fixed Tariff', 300, 500, 600]]
df = pd.DataFrame(data, columns = ['date', 'Supplier', 'Product', 'Eastern Price', 'Southern Price', 'South West Price'])
print(df)
我正在寻找按地区每天最便宜的价格。
所以输出应该看起来像
Date Region MinPrice
任何人都可以帮忙吗?
到目前为止,这就是我所拥有的,但我希望每个区域都拥有它(我的数据集中大约有 15 个),并且只需按日期设置,而不是按数据集中的每个条目设置
df.groupby(['date'])['date','Eastern Price'].transform('min')
解决方案
IIUC 需要melt
然后groupby
轻松找到我们可以使用的所有区域列filter
df1 = pd.melt(
df,
id_vars=["date"],
value_vars=df.filter(like="Price"), # this finds the region columns.
var_name="region",
value_name="amount",
).groupby(["date", "region"]).agg(minPrice=('amount','min'))
print(df1)
minPrice
date region
2018-10-29 Eastern Price 200
South West Price 300
Southern Price 100
2018-10-30 Eastern Price 300
South West Price 600
Southern Price 500
推荐阅读
- email - 发生致命错误无法写入缓存目录 /home/promozjo/tmp/horde 已为管理员记录详细信息
- javascript - javascript中的正则表达式公式解析
- ionic-framework - ionic - 后退按钮退出应用程序在 Ionic 5 中不起作用
- python - 在 Pandas DataFrame 的一列中查找并替换所有匹配但不区分大小写的字符串
- javascript - 如何添加一个 li 元素,然后添加一个带有文本的子 div 元素?
- c# - 使用 TLS 1.2 通过 C# 连接到本地共享点
- google-apps-script - Google 电子表格应用程序脚本 - 获取选定的非连续范围
- python - Python 请求错误 400 浏览器发送了无效请求
- php - codeigniter 使用单个输入字段一次上传多个文件
- react-native - 在 react native 中,async-await 不能与 useEffect() 一起正常工作。代码无法正确重新渲染