如何为Pandas DataFrame的无列名第一列添加Power列名
问题根因
- 你构造的输入字符串只有
Speed一个表头,没有给第一列设置表头 - 你指定的分隔符是制表符
\t,但实际数据是用空格分隔的,导致pandas把两列数值识别为同一列,全部存入Speed列中
解决方案
直接在读取csv时指定分隔符和列名即可,不需要在输入字符串里单独加Speed表头:
from io import StringIO import pandas as pd parts = [ '[Level1]\nLocation = "London"\nType= "GTHY66"\n' 'Date = "16-11-2021"\nEnergy level = "Critical zero"\n', '0.000 26.788\n0.027 26.807\n0.053 26.860' ] df_level2 = pd.read_csv( StringIO(parts[1]), sep='\s+', names=['Power', 'Speed'] ) print(df_level2.columns) print(df_level2)
输出结果
Index(['Power', 'Speed'], dtype='object') Power Speed 0 0.000 26.788 1 0.027 26.807 2 0.053 26.860
如果一定要保留原来的加表头的写法,也可以调整为:
lvl2_lines = "Power Speed\n" + parts[1] df_level2 = pd.read_csv(StringIO(lvl2_lines), sep='\s+')
效果完全一致。
内容的提问来源于stack exchange,提问作者Al-Andalus
相关产品推荐
相关产品推荐

