出于编程目的,我希望 .iloc
始终返回一个数据帧,即使结果数据帧只有一行。如何做到这一点?
目前,当结果只有一行时,.iloc
返回一个系列。示例:
In [1]: df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
In [2]: df
Out[2]:
a b
0 1 3
1 2 4
In [3]: type(df.iloc[0, :])
Out[3]: pandas.core.series.Series
这种行为不好有两个原因:
- 根据选择的行数,
.iloc
可以返回一个系列或一个数据框,这迫使我在我的代码中手动检查这一点
- (错误信息,如所指出在评论中).loc
,另一方面,总是返回一个数据框,使 pandas
内部不一致
对于 R 用户,这可以通过 drop = FALSE
或使用 tidyverse 的 tibble 来完成,默认情况下它总是返回一个数据帧。
最佳答案
使用双括号,
df.iloc[[0]]
输出:
a b
0 1 3
print(type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
df.iloc[[0],:]的缩写
关于python - 强制 pandas .iloc 返回单行数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990001/