Select 基于系列值的 DataFrame 数据
Select DataFrame data base on series value
我有一个 pandas' DataFrame,当我对 DataFrame 执行操作时,我得到了一个系列。我怎样才能使用该系列 select 只输出我找到匹配项的记录?
现在我将该列附加到 DataFrame 上并对数据帧进行查询,然后删除该列。虽然我真的不喜欢这个解决方案,所以我希望我能得到更好的解决方案。
data = [[1,2,3], [1,3,4], [3,4,5]]
columns = ['a', 'b', 'c']
df = pd.DataFrame(data, columns=columns)
series = df.myoperation()
df['myoperation'] = series
res = df[df['myoperation'] == True]
del res['myoperation']
series
对象将产生 1-1 匹配,因此索引项 1 将匹配数据框对象中的项 1。
以上是我用来完成它的 hacky 代码,但恐怕当数据框有很多列或比这个简单示例更多的数据时,它会很慢。
谢谢
我认为你可以使用 if series
是布尔值 Series
,索引与 df
相同,长度与 df
相同 - 它被称为 boolean indexing
:
series = pd.Series([True, False, True], index=df.index)
res = df[series]
print (res)
a b c
0 1 2 3
2 3 4 5
它始终适用于 boolean
列表和 numpy 数组,只有长度必须与 df
:
相同
L = [True, False, True]
res = df[L]
print (res)
a b c
0 1 2 3
2 3 4 5
arr = np.array([True, False, True])
res = df[arr]
print (res)
a b c
0 1 2 3
2 3 4 5
我有一个 pandas' DataFrame,当我对 DataFrame 执行操作时,我得到了一个系列。我怎样才能使用该系列 select 只输出我找到匹配项的记录?
现在我将该列附加到 DataFrame 上并对数据帧进行查询,然后删除该列。虽然我真的不喜欢这个解决方案,所以我希望我能得到更好的解决方案。
data = [[1,2,3], [1,3,4], [3,4,5]]
columns = ['a', 'b', 'c']
df = pd.DataFrame(data, columns=columns)
series = df.myoperation()
df['myoperation'] = series
res = df[df['myoperation'] == True]
del res['myoperation']
series
对象将产生 1-1 匹配,因此索引项 1 将匹配数据框对象中的项 1。
以上是我用来完成它的 hacky 代码,但恐怕当数据框有很多列或比这个简单示例更多的数据时,它会很慢。
谢谢
我认为你可以使用 if series
是布尔值 Series
,索引与 df
相同,长度与 df
相同 - 它被称为 boolean indexing
:
series = pd.Series([True, False, True], index=df.index)
res = df[series]
print (res)
a b c
0 1 2 3
2 3 4 5
它始终适用于 boolean
列表和 numpy 数组,只有长度必须与 df
:
L = [True, False, True]
res = df[L]
print (res)
a b c
0 1 2 3
2 3 4 5
arr = np.array([True, False, True])
res = df[arr]
print (res)
a b c
0 1 2 3
2 3 4 5