如果满足特定条件,如何从我的DataFrame中获取索引对象,比如给定列?
以下内容返回Series
个True/False
个对象,其foo
列符合my_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
答案 0 :(得分: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