Python 从数据帧中删除未命名的列
我是一名学生,有一个问题我想不出如何解决。我有如下csv数据: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
"","","","","","","","","",""
"","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的人所投的票将被记录,但不会改变公开显示的帖子分数。