如何在Python Pandas中用列值设置列名并处理空值
解决方案
简化实现代码
针对你的需求,我们可以用pandas库快速完成转换,代码逻辑清晰,适合新手理解:
import pandas as pd # 还原你提供的原始DataFrame data = [ ["0: 2", "57: 9", None, "436: 77", "11469: 1018", "203: 44"], ["0: 0", "57: 15", None, "436: 47", None, "203: 89"], ["0: 45", "57: 0", "11469: 1116", "436: 7", None, "203: 0"], ["0: 1", "57: 23", None, "436: 0", "11469: 18", None], ["0: 23", "57: 5", None, "436: 63", None, "203: 4"] ] df = pd.DataFrame(data) # 1. 生成新列名:提取每列第一个非空值的米数 new_col_names = [] for col in df.columns: non_null_vals = df[col].dropna() # 取该列第一个非空值拆分出米数,整列空则默认设为0 meter = non_null_vals.iloc[0].split(": ")[0] if not non_null_vals.empty else "0" new_col_names.append(meter) # 2. 转换单元格值:None替换为0,非空值提取秒数转整数 result_df = df.applymap(lambda cell: int(cell.split(": ")[1]) if cell is not None else 0) # 3. 替换为新列名 result_df.columns = new_col_names # 查看最终结果 print(result_df)
代码说明
- 构造原始数据:将你提供的表格内容转换成
pandas可处理的DataFrame格式。 - 生成新列名:遍历每一列,提取第一个非空单元格中的米数作为该列的新名称。
- 转换单元格值:遍历所有单元格,
None直接替换为0,非空值拆分字符串提取秒数并转为整数。 - 替换列名:把生成的米数列名赋值给结果DataFrame,完成格式转换。
运行代码后,输出结果将完全匹配你期望的格式。
内容的提问来源于stack exchange,提问作者Zunaira Said
相关产品推荐
相关产品推荐

