如何使用DataFrame.T

时间:2018-08-24 18:36:26

标签: python pandas

我有一个数据框,据我了解我可以使用df.T“翻转”,但是我想知道如何在转置数据框的同时添加新的列名。

我的数据是这样的:

dict = {"a":[1,2,3,4],
        "b":['A','B','C','D'],
        "c":['day','night','day','day']}

df = pd.DataFrame(dict)

   a  b      c
0  1  A    day
1  2  B  night
2  3  C    day
3  4  D    day

使用df.T这样:

df.T
     0      1    2    3
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

但是我正在尝试(并且失败)使标头通过移置更改,如下所示:

dfT = df.T(headers = df['b'])
dfT = df.T.columns = df['b']   

我希望得到的结果是在转置的同时得到这个:

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

使用df.T可以吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

set_index在换位之前

df.set_index('b').T

b    A      B    C    D
a    1      2    3    4
c  day  night  day  day

但是,这会移动行。

drop=False

df.set_index('b', drop=False).T

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

set_axis在换位后。

df.T.set_axis(df.b, axis=1, inplace=False)

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

将来,Pandas.DataFrame.set_axis将以inplace=False作为默认参数值,可能只是

df.T.set_axis(df.b, 1)

答案 1 :(得分:4)

您可以使用rename

dfT = df.T.rename(columns=df.b)

>>> dfT
     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

答案 2 :(得分:1)

非常简单

dfT = df.T
dfT.columns = df['b'].values

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

答案 3 :(得分:0)

您可以使用此:

df.set_index(df['b']).T

注意:您正在创建一个新的序列,该序列等于数据框中的b列,而不是将列'b'移入索引。

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

此外,要删除column.name,可以使用:

df.set_index(df['b']).rename_axis(None).T

输出:

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day