我有一个非常简单的数据框,如下所示:
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)被保留,第一行仍然有三列。
但是,当我输入以下命令df.loc[0]
时,输出结果如下:
df.loc[0]
Out[9]:
A 2
B a
C a
Name: 0, dtype: object
如您所见,该行已经变成了一个有3行的列!(3x1而不是3x1)。这是怎么可能的?我如何才能简单地提取出行并保持其描述目标的形状?您能否提供一种聪明而优雅的方法来实现呢?
我尝试使用转置命令
.T
,但没有成功……我知道我可以创建另一个数据框,其中的列是由原始数据框中提取出来的,但我认为这种方式相当繁琐且不优雅。如果您需要,以下是数据框:
import pandas as pd
df = pd.DataFrame({'A':[2,3,4,1], 'B':['a','s','c','f'], 'C':['a', 3, '!', 1]})
to_frame
转换为DataFrame
,然后才能进行转置,因为Series
不能被转置。 - jezraeldf.loc[[0]]
,您可以保留列之间可能不同的数据类型。df.loc[0]
会自动将行转换为系列,并将可能不同的数据类型转换为通用数据类型。 - piRSquared