2
我试图读取具有无标题列的CSV文件。目前,我的解决方案是摆脱没有标题的列
df = pd.read_csv("test.csv")
df = df[[col for col in df.columns if 'Unnamed' not in col]]
这看起来有点不好意思,如果文件中包含单词'Unnamed'的列,它们会失败。有一个更好的方法吗?
我试图读取具有无标题列的CSV文件。目前,我的解决方案是摆脱没有标题的列
df = pd.read_csv("test.csv")
df = df[[col for col in df.columns if 'Unnamed' not in col]]
这看起来有点不好意思,如果文件中包含单词'Unnamed'的列,它们会失败。有一个更好的方法吗?
也许你可以先重命名这些列?
df = pd.read_csv("test.csv")
df.columns = df.columns.str.replace('^Unnamed:.*', '')
df[[col for col in df.columns if col]]
仍然非常不好意思,但至少这只会替换以“未命名:”开头的字符串,然后再过滤它们。
read_csv
函数的参数usecols
接受可调用函数作为输入。如果您为不需要的列标题提供了评估为False
的函数,则会删除这些列。
func = lambda x: not x.startswith('Unnamed: ')
df = pd.read_csv('test.csv', usecols=func)
我想这个解决方案虽然没有真正的根本上不同于原来的解决方案。
我认为这已经是一个相当不错的解决方案。如果你想使它稍微更健壮,那么你仍然可以用'如果不是col.startswith('Unnamed:')'替换'not'未命名的''。 – Xukrao