根据另一个列熊猫数据框提取列值


109

我有点被困在提取一个变量对另一个变量的条件值上。例如,以下数据框:

A  B
p1 1
p1 2
p3 3
p2 4

我如何获得Awhen 的价值B=3?每当我提取的值时A,我都会得到一个对象,而不是字符串。


我知道了,我应该item()在最后加上。
安德森·朱

df.query并且pd.eval看起来很好拟合这个用例。有关pd.eval()功能系列,其功能和使用案例的信息,请访问使用pd.eval()在熊猫中进行动态表达评估
cs95

Answers:


192

您可以loc用来获取满足条件的序列,然后iloc获取第一个元素:

In [2]: df
Out[2]:
    A  B
0  p1  1
1  p1  2
2  p3  3
3  p2  4

In [3]: df.loc[df['B'] == 3, 'A']
Out[3]:
2    p3
Name: A, dtype: object

In [4]: df.loc[df['B'] == 3, 'A'].iloc[0]
Out[4]: 'p3'

23
谢谢你的帮助。df.loc[df['B'] == 3, 'A'].item()也为我工作。
Anderson Zhu

3
如果数据框的B列中有多个条目“ 3”,它将选择哪一个?
Subhash

1
df.loc [DF [ “Condition_Column”] == 0,( “COLUMN_1”,“COLUMN_2, “Column_3”, “Column_4”)对我的作品这个例子对于选择多列,他们应该在元组。
穆斯塔法乌萨18/12/12

如果df.loc [df ['B'] == 300,则'A']。iloc [0]表示输出是什么?
user1999109

38

您可以尝试query,输入更少:

df.query('B==3')['A']

查询很有趣,因为我们也可以添加更复杂的子句
Samir Baid '18

1
恕我直言,这是最好的答案。
NLR

27

df[df['B']==3]['A'],假设df是您的pandas.DataFrame。


您能否在熊猫官方文档中给出确切说明此方法的链接?
vasili111

我的意思][
vasili111

11

使用df[df['B']==3]['A'].values如果你只是想项目本身没有括号


您能否在熊猫官方文档中给出确切说明此方法的链接?我的意思][
vasili111

它确实使用[]
Sid

您仍然需要放在[0]最后以访问该值。
rubebop

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.