我有以下数据框:
df
A B
0 23 12
1 21 44
2 98 21
我该如何从这个数据帧中删除列名为A
和B
的列?一种方法是将其写入CSV文件,然后在读取时指定header=None。是否有一种不必写入CSV并重新读取的方法?
我认为您无法删除列名,只能通过使用 shape
和 range
重置它们:
print df.shape[1]
2
print range(df.shape[1])
[0, 1]
df.columns = range(df.shape[1])
print df
0 1
0 23 12
1 21 44
2 98 21
print df.to_csv(header=None,index=False)
23,12
21,44
98,21
print pd.read_csv(io.StringIO(u""+df.to_csv(header=None,index=False)), header=None)
0 1
0 23 12
1 21 44
2 98 21
使用skiprows
的下一个解决方案:
print df.to_csv(index=False)
A,B
23,12
21,44
98,21
print pd.read_csv(io.StringIO(u""+df.to_csv(index=False)), header=None, skiprows=1)
0 1
0 23 12
1 21 44
2 98 21
如何去除表格的标题行(第一行)和索引列(第一列)。
将数据写入CSV文件的方法:
df = pandas.DataFrame(your_array)
df.to_csv('your_array.csv', header=False, index=False)
读取CSV文件的方法:
df = pandas.read_csv('your_array.csv')
a = df.values
如果您想读取一个没有标题的CSV文件,请传递额外的参数header
:df = pandas.read_csv('your_array.csv', header=None)
我曾经遇到过同样的问题,但是用以下方法解决了它:
df = pd.read_csv('your-array.csv', skiprows=[0])
您可以先将DataFrame转换为Numpy数组,使用以下代码:
s1=df.iloc[:,0:2].values
然后,将numpy数组转换回DataFrame:s2=pd.DataFrame(s1)
这将返回一个没有列的DataFrame。 输入图像描述我还没有看到这个解决方案,所以我来分享一下我的做法,不需要使用read_csv:
df.rename(columns={'A':'','B':''})
df_dict = dict.fromkeys(df.columns, '')
df.rename(columns = df_dict)
这个完美运作:
要获取没有标题的数据框,请使用:
totalRow = len(df.index)
df.iloc[1: totalRow]
或者你可以像这样使用第二种方法:
totalRow = df.index.stop
df.iloc[1, totalRow]
从pandas DataFrame中删除标题列。可以在不写入csv并再次读取的情况下完成。
解决方案:
将列名替换为DataFrame的第一行。
df.columns = df.iloc[0,:].values
然后删除DataFrame的第一行。
df = df.tail(-1)
df = pd.DataFrame(df.values)
- BeRT2me