Pandas:根据搜索行查找列值[重复]
Posted
技术标签:
【中文标题】Pandas:根据搜索行查找列值[重复]【英文标题】:Pandas: find the column value based on searching the row [duplicate] 【发布时间】:2021-07-31 09:51:26 【问题描述】:假设我在 Pandas 中有一个数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame('A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2)
数据框df
看起来像
A B C D
0 foo one 0 0
1 bar one 1 2
2 foo two 2 4
3 bar three 3 6
4 foo two 4 8
5 bar two 5 10
6 foo one 6 12
7 foo three 7 14
如果我想在C
等于1的情况下获得D
的值,我该如何编写代码?换句话说,当C = 1
时,如何返回D
值2
?
【问题讨论】:
您是否尝试过使用.loc
对数据框进行切片? df.loc[df['C'].eq(1), 'D']
【参考方案1】:
你可以过滤使用.loc
:
result = df.loc[df.C == 1, "D"]
在 cmets 中注明的替代等效语法:
result = df.loc[df['C'].eq(1), 'D']
虽然您可以“链式操作,例如 df[df.C == 1]["D"]
会得到正确的结果,但随着数据规模的扩大,您会遇到性能不佳的情况。
【讨论】:
【参考方案2】:您可以根据条件(这里“C”== 1)搜索数据框,然后通过索引查找获取列
这将返回一个系列,您必须使用 .values
来获取 NumPy 数组
>>> df
A B C D
0 foo one 0 0
1 bar one 1 2
2 foo two 2 4
3 bar three 3 6
4 foo two 4 8
5 bar two 5 10
6 foo one 6 12
7 foo three 7 14
>>> df[df["C"] == 1]["D"].values
array([2])
>>> df[df["C"] == 1]["D"].values[0]
2
>>>
参考文献
Selecting rows in pandas DataFrame based on conditions【讨论】:
以上是关于Pandas:根据搜索行查找列值[重复]的主要内容,如果未能解决你的问题,请参考以下文章