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

Hel*_*a K 6 python csv transpose pandas

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

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
Run Code Online (Sandbox Code Playgroud)

即使我没有索引:

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
Run Code Online (Sandbox Code Playgroud)

问题是当我将数据帧保存到csv文件时:

df.to_csv(f)
Run Code Online (Sandbox Code Playgroud)

这个额外的行保持在顶部,我每次都必须手动删除它.

这也行不通:

 df.to_csv(f, index = None)
Run Code Online (Sandbox Code Playgroud)

因为旧索引不再被视为索引(只是另一行......).

它也发生在我换向相反的方式,我有一个额外的列,我无法删除.

有小费吗?

小智 10

我遇到了同样的问题,我通过在执行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
Run Code Online (Sandbox Code Playgroud)

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

fruit   apple   banana
number  3       5
Run Code Online (Sandbox Code Playgroud)


小智 8

与其删除额外的索引,不如尝试设置您想要的新索引,然后使用切片?

第 1 步:设置您想要的新索引:
df.columns = df.iloc[0]
第 2 步:创建一个新的数据框,删除多余的行。
df_new = df[1:]