我刚刚开始使用pandas数据框,我想知道是否有办法通过了解不同列的值来获取列中的值?
让我们假设一个数据帧(df),其中包含以下各列。如果我有一个来自'u'和'v'的值,例如u = 123
和v = 962
。
有没有办法在B列中获取与那些值相对应的值?
df = pd.DataFrame({'A':[30, 2, 12, 4, 32, 33, 69],
'B':['valx', 'valy', 'valz', 'val45', 'val78', 'val516', 'val123'],
'C':['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
'D':[165, 70, 120, 80, 180, 172, 150],
'u':[147,258,369,123,893,123,879],
'v':[123,456,789,741,852,963,369]
},
index=['123', '456', '483', '861', '789', '963', '753'])
A B C D u v
123 30 valx 165 Steak 147 123
456 2 valy 70 Lamb 258 456
483 12 valz 120 Mango 369 789
861 4 val45 80 Apple 123 741
789 32 val78 180 Cheese 893 852
963 33 val516 172 Melon 123 963
753 69 val12 150 Beans 879 369
当前要解决此问题,我执行以下代码,我认为最好的方式是...:-/
extrait = df[(df['u'] == 123 ) & (df['v'] == 962)]
Val_in_B = extrait['B'][0]
Val_in_B
>>> val516
答案 0 :(得分:0)
或多或少。实际上,当您选择带有条件的行时,可能会有0、1或许多值。这就是为什么选择单个列会为您提供一系列的原因。
但是您可以通过这种方式进行一次提取:
df.loc[(df.u==123)&(df.v==963), 'B']
只有在确定搜索将返回一个值的情况下,才选择第一个元素。