Python 从数据帧中删除未命名的列

Python 从数据帧中删除未命名的列,python,pandas,dataframe,Python,Pandas,Dataframe,我是一名学生,有一个问题我想不出如何解决。我有如下csv数据: "","","","","","","","","","" "","report","","","","","","","","" "","bla1","bla2","","","","bla3","","","" "","bla4","bla5","","","","","bla6","","" "","bla6","bla7","bla8","","1","2","3","4","5" "","bla9","bla10","bl

我是一名学生,有一个问题我想不出如何解决。我有如下csv数据:

"","","","","","","","","",""
"","report","","","","","","","",""
"","bla1","bla2","","","","bla3","","",""
"","bla4","bla5","","","","","bla6","",""
"","bla6","bla7","bla8","","1","2","3","4","5"
"","bla9","bla10","bla11","","6","7","8","9","10"
"","bla12","bla13","bla14","","11","12","13","14","15"
"","","","","","","","","",""
SMT = pd.read_csv(file.csv, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3))
SMT.fillna(0, inplace=True)
           1          2          3          4
0          6          7          8          9
1         11         12         13         14
2          0          0          0          0
df1 = SMT.loc[:, ~SMT.columns.str.contains('^Unnamed')]
读取csv的代码如下:

"","","","","","","","","",""
"","report","","","","","","","",""
"","bla1","bla2","","","","bla3","","",""
"","bla4","bla5","","","","","bla6","",""
"","bla6","bla7","bla8","","1","2","3","4","5"
"","bla9","bla10","bla11","","6","7","8","9","10"
"","bla12","bla13","bla14","","11","12","13","14","15"
"","","","","","","","","",""
SMT = pd.read_csv(file.csv, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3))
SMT.fillna(0, inplace=True)
           1          2          3          4
0          6          7          8          9
1         11         12         13         14
2          0          0          0          0
df1 = SMT.loc[:, ~SMT.columns.str.contains('^Unnamed')]
SMT打印输出:

  Unnamed: 5 Unnamed: 6 Unnamed: 7 Unnamed: 8
0          1          2          3          4
1          6          7          8          9
2         11         12         13         14
预期产出:

 1          2          3          4
 6          7          8          9
11         12         13         14
我已经在尝试skiprows=0,1,2,3,但结果如下:

"","","","","","","","","",""
"","report","","","","","","","",""
"","bla1","bla2","","","","bla3","","",""
"","bla4","bla5","","","","","bla6","",""
"","bla6","bla7","bla8","","1","2","3","4","5"
"","bla9","bla10","bla11","","6","7","8","9","10"
"","bla12","bla13","bla14","","11","12","13","14","15"
"","","","","","","","","",""
SMT = pd.read_csv(file.csv, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3))
SMT.fillna(0, inplace=True)
           1          2          3          4
0          6          7          8          9
1         11         12         13         14
2          0          0          0          0
df1 = SMT.loc[:, ~SMT.columns.str.contains('^Unnamed')]
我已经尝试将index=Flase-SMT=pd.read_-csvfile.csv、index=False、usecols=5,6,7,8、skiprows=1,2,3、nrows=3或index_-col=0/None/False设置为无效,上次我是这样尝试的:

"","","","","","","","","",""
"","report","","","","","","","",""
"","bla1","bla2","","","","bla3","","",""
"","bla4","bla5","","","","","bla6","",""
"","bla6","bla7","bla8","","1","2","3","4","5"
"","bla9","bla10","bla11","","6","7","8","9","10"
"","bla12","bla13","bla14","","11","12","13","14","15"
"","","","","","","","","",""
SMT = pd.read_csv(file.csv, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3))
SMT.fillna(0, inplace=True)
           1          2          3          4
0          6          7          8          9
1         11         12         13         14
2          0          0          0          0
df1 = SMT.loc[:, ~SMT.columns.str.contains('^Unnamed')]
我得到了

空数据帧 列:[] 索引:[0,1,2]


我只想摆脱未命名的:5~未命名的:8,如何正确地摆脱这个未命名的东西?

只需指定新的列名:

 df = pd.read_csv('temp.csv', usecols=[5,6,7,8], skiprows=[1,2,3], nrows=3)
 df.columns = range(1, 1+len(df.columns))

这位匿名者只是说,熊猫不知道如何命名这些列。所以这些只是名字。您可以在read_csv中设置这样的名称

输出:

   c1  c2  c3  c4
0   1   2   3   4
1   6   7   8   9
2  11  12  13  14

您必须设置header=0,以便pandas知道这通常是header。或者你设置skiprows=4

当没有列名时,pandas默认使用unnamed,所以不要删除它,只需将你的列重命名为SMT.columns=[1,2,3,4]是的,就是这样,为什么我没有想到,傻我,非常感谢@Yucathaks的帮助,先生@ASGM@HazelR很高兴听到。如果这解决了你的问题,请考虑把答案加起来,并把它标记为解决方案。我已经多次投票了,但它说它不会显示它,因为我的代表低于15这个按摩感谢反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。