从pandas Dataframe 中删除头列

yebdmbv4  于 2023-05-12  发布在  其他
关注(0)|答案(7)|浏览(274)

我有以下几点。 Dataframe :
df

A   B
0  23  12
1  21  44
2  98  21

如何从该数据框中删除列名AB?一种方法可能是将其写入csv文件,然后在指定header=None中读取它。有没有一种方法可以做到这一点,而不写入到csv和重读?

bwitn5fc

bwitn5fc1#

我认为你不能删除列名,只能用rangeshape重置它们:

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

这与使用to_csvread_csv相同:

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
ejk8hzay

ejk8hzay2#

如何摆脱标题(第一行)和索引(第一列)。
要写入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)
axr492tv

axr492tv3#

我也遇到了同样的问题,但我用这种方式解决了它:

df = pd.read_csv('your-array.csv', skiprows=[0])
am46iovg

am46iovg4#

还没有看到这个解决方案,所以下面是我在不使用read_csv的情况下是如何做到的:

df.rename(columns={'A':'','B':''})

如果将所有列名重命名为空字符串,则返回的表将没有标题。
如果你的表中有很多列,你可以先创建一个字典,而不是手动重命名:

df_dict = dict.fromkeys(df.columns, '')
df.rename(columns = df_dict)
gdx19jrr

gdx19jrr5#

你可以先将DataFrame转换为Numpy数组,使用这个:
s1=df.iloc[:,0:2].values
然后,将numpy数组转换回DataFrame:
s2=pd.DataFrame(s1)
这将返回一个没有列的DataFrame。enter image description here

vlju58qv

vlju58qv6#

这是完美的工作:
要获取不带header的dataframe,请用途:

totalRow = len(df.index)
df.iloc[1: totalRow]

或者你可以像这样使用第二种方法:

totalRow = df.index.stop
df.iloc[1, totalRow]
lf3rwulv

lf3rwulv7#

从pandas DataFrame中删除头列。它可以做到不写入csv,然后再次阅读。
解决方案:
将列名替换为DataFrame的第一行。

df.columns = df.iloc[0,:].values

然后删除DataFrame的第一行。

df = df.tail(-1)

相关问题