使用Pandas groupby分组后如何正确访问DataFrame列?
问题原因
遍历Pandas的groupby对象时,每次迭代返回的是元组而非单独的DataFrame:
- 元组第一个元素:分组的键值组合(格式为
(symbol值, 日期值)) - 元组第二个元素:对应分组的DataFrame
你直接用ohlc['symbol']访问元组,相当于给元组传入字符串索引,这违反了元组只能用整数/切片索引的规则,因此触发报错。
修正代码
将循环变量拆分为分组键和对应DataFrame两部分,即可正常访问:
df = pd.read_sql_query("SELECT * from ohlc_minutes", conn) df['timestamp'] = pd.to_datetime(df['timestamp']) seperate_days = df.groupby(['symbol', df['timestamp'].dt.date]) # 拆分分组键与对应DataFrame for (symbol, date), ohlc_df in seperate_days: display(ohlc_df) # 直接获取当前分组的symbol值(来自分组键) print(f"当前分组symbol: {symbol}") # 或从DataFrame中获取symbol列(整列值一致) print(ohlc_df['symbol'].iloc[0])
替代写法
如果只需要处理分组后的DataFrame,也可以直接提取元组的第二个元素:
for item in seperate_days: ohlc_df = item[1] display(ohlc_df) # 后续处理逻辑
内容的提问来源于stack exchange,提问作者a7dc
相关产品推荐
相关产品推荐

