简体   繁体   中英

Pandas: Get corresponding column value in row based on unique value

I've figured out how to get the information I want, but I would be surprised if there is not a better, more readable way to do so.

I want to get the value in a different column in the row that holds the data element I specify. For example, what is the value in column b that corresponds to the value of 11 in column a .

>>> df
    a   b   c
0  10  20  30
1  11  21  31
2  12  22  32

>>> df['b'][df[df['a'] == 11].index.tolist()].tolist()
[21]

This is how I currently solved it, but in practice my dataframes are not named so concisely and I have long strings as column names so the line gets hard to read.

EDIT: If the value in 'a' is not unique is there also a way to get all corresponding values in 'b'?

You can use a boolean mask with loc to return all rows where the boolean condition is met, here we mask the df with the condition where 'a' == 11, and where this is met return all values for 'b':

In [120]:
df = pd.DataFrame({'a':[10,11,11],'b':np.arange(3), 'c':np.random.randn(3)})
df

Out[120]:
    a  b         c
0  10  0 -1.572926
1  11  1 -0.639703
2  11  2 -1.282575

In [121]:
df.loc[df['a'] == 11,'b']

Out[121]:
1    1
2    2
Name: b, dtype: int32

You can use loc to return all the rows where the condition is met. This code will give you the exact value that corresponds to that row where a condition is met.

result=df.loc[df['a'] == 11,'b'].values[0]
print(result)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM