Pandas - 获取行匹配条件的列值[重复]

Posted

技术标签:

【中文标题】Pandas - 获取行匹配条件的列值[重复]【英文标题】:Pandas - Get column value where row matches condition [duplicate] 【发布时间】:2020-09-09 21:09:30 【问题描述】:

我正在阅读 Pandas 中的 CSV 文件。假设CSV如下:

column_1,column_2,column_3
1,2,value_1
1,3,value_2
2,1,value_3
2,2,value_4

我想从column_3(即value_2)获取值,其中column_1=1column_2=3。我确信只有 1 行符合这个条件。

所以我正在做这样的事情:

df = pd.read_csv(...file...)
cond = (df['column_1'] == 1) & (df['column_2'] == 3)
...

我尝试使用df.loc[cond, 'column_3'] 给我这个值,但是它返回一个数据帧,其中索引作为该行的行号。这里的行号不是0,而是1(即CSV文件中的原始行号),这不让我做df.loc[cond, 'column_3'][0]

如何在此处获取列值?

【问题讨论】:

df.loc[cond, 'column_3'][0].iloc[0] df['column_3'].loc[(df['column_1'] == 1) & (df['column_2'] == 3)] 【参考方案1】:

这应该可行:

import pandas as pd

data = 
    'column_1': [1, 1, 2, 2],
    'column_2': [2, 3, 1, 2],
    'column_3': ['value_1', 'value_2', 'value_3', 'value_4']


df = pd.DataFrame(data=data)

cond = (df['column_1'] == 1) & (df['column_2'] == 3)
result = df[cond].column_3.values[0]
result

【讨论】:

以上是关于Pandas - 获取行匹配条件的列值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如果条件[重复],则从另一列更新列值

删除pandas数据帧中的重复项后,替换特定的列值

pandas根据两个条件设置列值[重复]

在python中过滤与列表值匹配的列值的数据框[重复]

Pandas:根据搜索行查找列值[重复]

Python/Pandas - 按列值删除重复行