python - 强制 pandas .iloc 返回单行数据框?

标签 python pandas dataframe indexing

出于编程目的,我希望 .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/

相关文章:

python请求上传带有附加数据的大文件

python - 按行值 pandas 的特定组合计算行数

python - 使用 Pandas 进行基本矩阵计算

python - 没有标签的 Pandas 数据框列

python - Pandas:以一列的子字符串搜索和另一列的逆搜索为条件创建一个新列

python - 忽略索引的两个数据帧的快速减法(Python)

r - 绑定(bind)两个具有不同列名的数据框

python - 如何在 Django TemplateView 中为 template_name_field 传递 mixin?

python - 在 python networkx 图中为节点添加工具提示

python - 使用具有特定值计数的 GroupBy 过滤 Pandas DataFrame