Python中如何获取对应最新日期的Values_2列数值
解决获取最新日期对应Values_2的问题
先纠正你代码里的几个关键错误:
- 第一行
df = pd.to_datetime(['Date'])完全错误,这是把字符串列表['Date']转成datetime对象,得到的不是你的原始数据框,后续操作自然会出错。 df["Date"].max():因为上面的df是单个元素的Series,不存在"Date"列,会触发KeyError。df[['Date'] == '22/01/03']:语法错误,列表和字符串比较会得到布尔值False,用这个索引数据框会报错;而且你不需要用groupby求均值,直接筛选取对应值即可。
正确实现步骤(假设你已经通过pd.read_csv或其他方式加载了原始数据框)
- 先将Date列转为datetime类型(避免字符串日期排序/比较的潜在问题,比如不同格式的日期):
import pandas as pd # 转换Date列格式,适配你的日/月/年格式 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y')
- 方法一:通过最大日期筛选
# 获取最新日期 latest_date = df['Date'].max() # 筛选对应行并取出Values_2的值 result = df.loc[df['Date'] == latest_date, 'Values_2'].iloc[0] print(result) # 输出13
- 方法二:按日期排序后取末尾/开头值
# 按日期升序排序,取最后一行的Values_2 result = df.sort_values('Date')['Values_2'].iloc[-1] # 或者按日期降序排序,取第一行的Values_2 result = df.sort_values('Date', ascending=False)['Values_2'].iloc[0]
如果你的Date列暂时不想转成datetime(不推荐,因为字符串日期在跨月/跨年时容易出问题),也可以直接用字符串比较(仅适用于你的日期格式是日/月/年且位数统一的情况):
latest_date_str = df['Date'].max() result = df.loc[df['Date'] == latest_date_str, 'Values_2'].iloc[0]
内容的提问来源于stack exchange,提问作者Markus Fürst
相关产品推荐
相关产品推荐

