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

时间:2019-04-27 17:19:33

标签: python 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

2 个答案:

答案 0 :(得分:0)

使用此:

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

答案 1 :(得分:0)

您可以使用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

  • 当您要引用基础行号时,请使用.ìloc,该行号的范围始终是0到len(df)

请注意,已包含.loc中切片的 end 值。对于.ìloc和一般的Python切片而言,情况并非如此。

一般的熊猫

熊猫有“简便”的方式来处理各种事情。如果您认为表格数据的操作很常见,请在自己发明之前尝试搜索熊猫完成该表格的方法。熊猫几乎总是会拥有比我们自己编写的语法简洁且计算速度更快的处理方式。