我有这个人。数据帧:
DF
A B
0 23 12
1 21 44
2 98 21
如何从此数据框中删除列名A
和B
?一种方法可能是将其写入csv文件,然后在指定header = None时读取它。如果没有写出csv并重新阅读,有没有办法做到这一点?
答案 0 :(得分:24)
我认为您无法删除列名称,只能使用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
答案 1 :(得分:7)
如何摆脱标题(第一行)和索引(第一列)。
要写入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)
答案 2 :(得分:1)
还没有看到这种解决方案,所以这是我不使用read_csv的方法:
df.rename(columns={'A':'','B':''})
如果将所有列名重命名为空字符串,则表将返回而没有标题。
如果表中有很多列,则可以先创建一个字典,而无需手动重命名:
df_dict = dict.fromkeys(df.columns, '')
df.rename(columns = df_dict)
答案 3 :(得分:0)
我遇到了同样的问题,但是用这种方式解决了:
df = pd.read_csv('your-array.csv', skiprows=[0])
答案 4 :(得分:0)
您可以先将 DataFrame 转换为 Numpy 数组,使用:
s1=df.iloc[:,0:2].values
然后,将 numpy 数组转换回 DataFrame:
s2=pd.DataFrame(s1)
这将返回一个没有列的 DataFrame。 enter image description here