我有一个数据框,据我了解我可以使用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可以吗?
谢谢!
答案 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