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)
你需要添加[]为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)