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
我有一个非常简单的数据框,如下所示:
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