Pandas处理DST数据时列名赋值引发TypeError,无法计算均值
解决Pandas分配混合类型列名的TypeError问题
错误原因
你遇到的TypeError是因为给DataFrame分配的列名列表混合了字符串('Date')和整数(1-24)类型。Pandas在处理列名时,内部操作需要统一类型,混合类型会触发字符串拼接的类型冲突错误。
修正方案
将列名统一为字符串类型,把整数1-24转换成字符串形式即可解决问题:
url_jan = "https://wdc.kugi.kyoto-u.ac.jp/dst_realtime/202401/dst2401.for.request" data_jan = pd.read_csv(url_jan, delim_whitespace=True, header=None) data_jan.drop(columns=[1, 26], inplace=True) # 将1-24转为字符串,统一列名类型 columns = ['Date'] + [str(i) for i in range(1, 25)] data_jan.columns = columns # 计算行均值的逻辑不受列名类型影响,可直接保留 data_jan['Mean'] = data_jan.iloc[:, 1:25].mean(axis=1) df_mean = data_jan[['Date', 'Mean']]
补充说明
如果后续需要通过数字标识列,也可以基于字符串列名做转换,比如data_jan[str(5)]就能直接索引对应列。使用iloc[:,1:25]是按位置索引,完全不受列名类型限制,所以计算均值的代码无需修改。
内容的提问来源于stack exchange,提问作者Raion Chan
相关产品推荐
相关产品推荐

