Pandas 自动将行转换为列

Pandas automatically converts row to column

我有一个非常简单的数据框,如下所示:

In [8]: df
Out[8]: 
   A  B  C
0  2  a  a
1  3  s  3
2  4  c  !
3  1  f  1

我的目标是以如下方式提取第一行:

   A  B  C
0  2  a  a

如您所见,数据框形状 (1x3) 得到保留,第一行仍有 3 列。

然而,当我键入以下命令时 df.loc[0] 输出结果是这样的:

df.loc[0]
Out[9]: 
A    2
B    a
C    a
Name: 0, dtype: object

如您所见,该行已变成一列 3 行! (3x1 而不是 3x1)。这怎么可能?我怎样才能简单地提取行并按照我的目标描述保留其形状?您能提供一种巧妙而优雅的方法吗?

我尝试使用转置命令 .T 但没有成功...我知道我可以创建另一个数据框,其中的列由原始数据框提取,但我会说这种方式非常乏味且不优雅(pd.DataFrame({'A':[2], 'B':'a', 'C':'a'})).

如果需要,这里是数据框:

import pandas as pd
df = pd.DataFrame({'A':[2,3,4,1], 'B':['a','s','c','f'], 'C':['a', 3, '!', 1]})

您需要为 DataFrame 添加 []:

#select by index value
print (df.loc[[0]])
   A  B  C
0  2  a  a

或:

print (df.iloc[[0]])
   A  B  C
0  2  a  a

如果需要转置Series,首先需要通过to_frame将其转置为DataFrame:

print (df.loc[0].to_frame())
   0
A  2
B  a
C  a

print (df.loc[0].to_frame().T)
   A  B  C
0  2  a  a

使用范围选择器将保留 Dataframe 格式。

df.iloc[0:1]
Out[221]: 
   A  B  C
0  2  a  a