如何在Pandas中为CSV添加表头且不覆盖首行数据?
解决Pandas导入CSV时覆盖首行数据的问题
当你直接用read_csv导入无表头的CSV,再手动设置列名时,原首行数据会被当成表头覆盖掉,这里有两种靠谱的解决办法:
方法一:导入时直接指定无表头,同时设置列名
导入CSV的时候,通过header=None告诉Pandas这个文件没有表头,首行就是数据,然后直接用names参数设置列名,一步到位:
import pandas as pd # 导入时指定无表头,同时设置列名 nocolumns = pd.read_csv("nocolumns.csv", header=None, names=["Col1", "Col2", "Col3", "Col4"])
方法二:修复已导入的DataFrame(适合已经执行了原代码的情况)
如果已经按原代码导入了数据,首行被当成表头了,可以把原表头转成数据行,再设置新列名:
import pandas as pd nocolumns = pd.read_csv("nocolumns.csv") # 把原表头转成一行数据,添加到DataFrame开头 new_row = pd.Series(nocolumns.columns, index=nocolumns.columns) nocolumns = pd.concat([pd.DataFrame([new_row]), nocolumns], ignore_index=True) # 设置新的列名 nocolumns.columns = ["Col1", "Col2", "Col3", "Col4"]
这样就能保留原本的首行数据,同时设置正确的表头了。
内容的提问来源于stack exchange,提问作者Greyville
相关产品推荐
相关产品推荐

