Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开csv文件,删除名称中包含单词的列,保存在新的csv文件Python中_Python_Python 3.x_Pandas_Csv_Scikit Learn - Fatal编程技术网

打开csv文件,删除名称中包含单词的列,保存在新的csv文件Python中

打开csv文件,删除名称中包含单词的列,保存在新的csv文件Python中,python,python-3.x,pandas,csv,scikit-learn,Python,Python 3.x,Pandas,Csv,Scikit Learn,我有一个csv文件。在该文件中,有许多列的名称为: 值\编号、物种\名称、颜色\名称、未命名:1等 如何使用pandas实现python脚本:打开csv文件,搜索包含unnamed一词的列,然后删除它们,并将清理后的csv保存为具有更新名称的新csv 以下是脚本: import os, glob import pandas as pd path= "/home/CaptainSnake/Desktop/Test_class/class_data" all_files

我有一个csv文件。在该文件中,有许多列的名称为:

值\编号、物种\名称、颜色\名称、未命名:1等

如何使用pandas实现python脚本:打开csv文件,搜索包含unnamed一词的列,然后删除它们,并将清理后的csv保存为具有更新名称的新csv

以下是脚本:

import os, glob
import pandas as pd



path= "/home/CaptainSnake/Desktop/Test_class/class_data"

all_files = glob.glob(os.path.join(path, "Classification_testData_*.csv"))
df_from_each_file = (pd.read_csv(f, sep=',') for f in all_files)
df_merged   = pd.concat(df_from_each_file, ignore_index=False, sort=False)
df_merged.columns

df_merged.columns.str.match('Unnamed')
df_merged.loc[:, ~df_merged.columns.str.match('Unnamed')]
df_merged.to_csv( "Classification_testData_cleaned.csv")

特别是,此脚本将所有csv与特定名称合并…然后它将从unnamed:etc中清除新csv。

这将删除所有以“unnamed”开头的列:

filtered_cols = [i for i in df.columns if not i.startswith("Unnamed")]
df[filtered_cols].to_csv('filename.csv')

请提供输入csv的示例以及所需的输出。另外,请添加您为解决此问题所做的任何尝试。@Rishin抱歉..我更新了问题…然后错误地删除了:(亲爱的@Rishin非常温和,回答很好。还有一点疑问。如果我想删除两种类型?那么未命名和没有名称的列?我该怎么做?@TforV使用此筛选的\u cols=[i代表df.columns中的i,如果不是i.startswith(“未命名”)和len(i)>0]。这也将删除空列名