1

当满足特定条件时,如何从我的 DataFrame 中获取索引对象,比如给定列?

以下返回一个Series对象,其值满足 的列中的True/False某些条件:foomy_dataframe

true_entries = my_dataframe['foo'].apply(my_lambda_function) == True

但我想得到的是index与这些条目相对应的对象。

我该怎么做呢?

作为应用程序的一个示例,我想在满足该条件的数据框中删除行。

更新:

我尝试了@DSM 的建议,从我的数据框中删除条目(行),但以下命令:

indices_to_drop = my_df.index[my_df['foo'].apply(my_lambda_function) == True]
my_df.drop(indices_to_drop)

返回:

DeprecationWarning: height has been deprecated
4

1 回答 1

2

如果你想要一个Index对应于真实值的值,你可以使用布尔值Series作为切片df.index

>>> df
    A  B
0  10 -5
1  20 -2
2  30  1
3  40  4
4  50  7
>>> df["B"].apply(lambda x: x % 2 == 0)
0    False
1     True
2    False
3     True
4    False
Name: B, dtype: bool
>>> df.index[df["B"].apply(lambda x: x % 2 == 0)]
Int64Index([1, 3], dtype=int64)

但是,如果您只想删除满足该条件的行,则根本不需要构造显式索引。您可以简单地保留不满足条件的那些:

>>> df[~df["B"].apply(lambda x: x % 2 == 0)]
    A  B
0  10 -5
2  30  1
4  50  7
于 2013-07-26T17:06:04.260 回答