熊猫自动将行转换为列

Fed*_*ile 5 python row shape dataframe pandas

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

In [8]: df
Out[8]: 
   A  B  C
0  2  a  a
1  3  s  3
2  4  c  !
3  1  f  1
Run Code Online (Sandbox Code Playgroud)

我的目标是以这种方式提取第一行:

   A  B  C
0  2  a  a
Run Code Online (Sandbox Code Playgroud)

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

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

df.loc[0]
Out[9]: 
A    2
B    a
C    a
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)

如您所见,该行已变成具有3行的列!(3x1而非3x1)。这怎么可能?如何简单地提取行并保留目标中描述的形状?您能提供一种聪明而优雅的方法吗?

我尝试使用transpose命令,.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]})
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

你需要添加[]DataFrame

#select by index value
print (df.loc[[0]])
   A  B  C
0  2  a  a
Run Code Online (Sandbox Code Playgroud)

要么:

print (df.iloc[[0]])
   A  B  C
0  2  a  a
Run Code Online (Sandbox Code Playgroud)

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

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