csv 如何在Pandas中移除transpose()后的额外行(或列)

ogq8wdun  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(119)

在 Dataframe 上使用转置后,总是有一个额外的行作为初始 Dataframe 索引的余数,例如:

import pandas as pd

df = pd.DataFrame({'fruit':['apple','banana'],'number':[3,5]})
df
    fruit  number
0   apple       3
1  banana       5
df.transpose()
        0       1
fruit   apple  banana
number      3       5

即使我没有索引:

df.reset_index(drop = True, inplace = True)
df
    fruit  number
0   apple       3
1  banana       5

df.transpose()
        0       1
fruit   apple  banana
number      3       5

问题是,当我将dataframe保存到csv文件时:

df.to_csv(f)

这额外的一行停留在顶部,我必须手动删除它每一次。
这也不起作用:

df.to_csv(f, index = None)

因为旧索引不再被视为索引(只是另一行...)。
它也发生在当我转置其他方式,我得到了一个额外的列,我不能删除。
有什么建议吗?

pcrecxhr

pcrecxhr1#

我也遇到了同样的问题,我在做transpose之前通过重置索引解决了这个问题。df.set_index('fruit').transpose()

import pandas as pd

df = pd.DataFrame({'fruit':['apple','banana'],'number':[3,5]})
df
    fruit   number
0   apple   3
1   banana  5

df.set_index('fruit').transpose()给出:

fruit   apple   banana
number  3       5
tyg4sfes

tyg4sfes2#

与其删除多余的索引,为什么不尝试设置所需的新索引,然后使用切片呢?
步骤1:设置所需的新索引:
df.columns = df.iloc[0]
步骤2:创建一个新 Dataframe ,删除多余的行。
df_new = df[1:]

6uxekuva

6uxekuva3#

如果您不希望其中一列保持索引(特别是如果您使用的是较大的数据集),并且希望具有数值索引,则可以使用此方法:

#Create df
df = pd.DataFrame({'fruit':['apple','banana'],'number':[3,5]})
#Set the first column as the index + transpose it
df = df.set_index(df.columns[0]).transpose()
#Rename the index with the name of your first column + reset index
df = df.rename_axis("fruit").reset_index()
#Remove the index name
df = df.rename_axis(None, axis = 1)

#Result
    fruit  apple  banana
0  number      3       5

相关问题