从熊猫数据框中选择特定行

Posted

技术标签:

【中文标题】从熊猫数据框中选择特定行【英文标题】:Selecting specific rows from a pandas dataframe 【发布时间】:2022-01-21 16:13:42 【问题描述】:

我只是想知道 pandas 中是否有任何函数可以根据数据帧中的索引选择特定行,而无需编写自己的函数。

例如:从大型数据框中选择索引为 [15:50] 的行。

这个函数我写了,但是想知道有没有捷径。

def split_concat(data , first , last):
    data_out = pd.DataFrame()
    for i in range(first, last +1):
        data_split = data.loc[i]
        data_out = pd.concat([data_out,data_split],axis = 0)

    return data_out

【问题讨论】:

【参考方案1】:

使用这个:

rowData = your_df.loc[ 'index' , : ]

【讨论】:

【参考方案2】:

您可以使用pandas.DataFrame.locpandas.DataFrame.iloc。请参阅下面的示例。

import pandas as pd

d = ['a': 1, 'b': 2, 'c': 3, 'd': 4,
     'a': 100, 'b': 200, 'c': 300, 'd': 400,
     'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 ,
     'a': 1500, 'b': 2500, 'c': 3500, 'd': 4500]

df = pd.DataFrame(d)

print(df)               # Print original dataframe
print(df.loc[1:2])      # Print rows with index 1 and 2, (method 1)
print(df.iloc[1:3])     # Print rows with index 1 and 2, (method 2)

原始数据框:print(df) 将打印:

      a     b     c     d
0     1     2     3     4
1   100   200   300   400
2  1000  2000  3000  4000
3  1500  2500  3500  4500

print(df.loc[1:2]) 按标签选择索引:

      a     b     c     d
1   100   200   300   400
2  1000  2000  3000  4000

print(df.iloc[1:3]) 用于按整数选择行。正如 ALollz 所说,行被视为从 0 到 len(df) 的数字:

      a     b     c     d
1   100   200   300   400
2  1000  2000  3000  4000

经验法则可能是:

当您想要引用索引的实际值(字符串或整数)时,请使用.loc

当您想要引用始终介于 0 到 len(df) 之间的基础行号时,请使用 .iloc

请注意,.loc 中切片的 end 值包括在内。 .iloc 和一般的 Python 切片都不是这种情况。

一般的熊猫

Pandas 有“简单”的方式来做各种类似的事情。如果您认为处理表格数据时遇到问题很常见,请在自己发明之前尝试搜索 pandas 的方法来完成它。与我们自己编写的相比,Pandas 几乎总是有一种语法简洁且计算速度更快的做事方式。

【讨论】:

一般.iloc 的行为不像您描述的那样;只有在这种情况下,您有一个从 0 开始的 rangeIndex。.iloc 将通过数组索引(从 0 开始运行到 len(df))来索引底层数组。这些不需要与 DataFrame 的实际索引有任何关系。例如,查看pd.DataFrame(['A','B','C'], index=[7,8,9]).iloc[0:2] 的输出。这篇文章还很好地解释了为什么.loc 是包含结尾的:***.com/questions/55187559/… 你是对的 ALollz。它指的是从0到len(df)的底层行号。感谢您指出了这一点。我已经编辑了答案以反映这一点。

以上是关于从熊猫数据框中选择特定行的主要内容,如果未能解决你的问题,请参考以下文章

从熊猫数据框中提取在特定列中具有特定值的所有行

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

从熊猫数据框中消除特定日期的最快方法

根据熊猫中多列中的值从数据框中选择行

根据熊猫中多列中的值从数据框中选择行

根据熊猫中多列中的值从数据框中选择行