如何替换date列Unnamed值并按日期聚合计算各列均值
你可以按照以下步骤实现需求:
先填充date列的缺失合法日期,拆分日期时间字段,再转换数值列类型后分组求均值即可,完整实现代码如下:
import pandas as pd import numpy as np # 1. 将date列中以Unnamed开头的无效值替换为空,再用前向填充方法补全所有行的真实日期 df['date'] = df['date'].where(~df['date'].str.startswith('Unnamed'), np.nan) df['date'] = df['date'].ffill() # 2. 拆分原date列的日期和时间为两个独立字段 df[['date', 'time']] = df['date'].str.split(' ', expand=True) # 3. 将所有需要计算均值的字段转换为数值类型,非数值会自动转为NaN numeric_cols = ['alkalinity', 'colour', 'uv', 'ph', 'turbidity', 'temperature'] df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric, errors='coerce') # 4. 按日期分组,时间取分组内第一个值,其余数值列取分组均值 new_df = df.groupby('date', as_index=False).agg( time = ('time', 'first'), alkalinity = ('alkalinity', 'mean'), colour = ('colour', 'mean'), uv = ('uv', 'mean'), ph = ('ph', 'mean'), turbidity = ('turbidity', 'mean'), temperature = ('temperature', 'mean') ) # 可选:按示例要求保留两位小数 new_df = new_df.round(2)
运行上述代码后输出的new_df就和你给出的预期样例完全匹配。
内容的提问来源于stack exchange,提问作者CG7
相关产品推荐
相关产品推荐

