Python 熊猫:根据唯一值获取行中对应的列值
我已经知道了如何获取我想要的信息,但如果没有更好、更可读的方法,我会感到惊讶 我想在保存我指定的数据元素的行中的另一列中获取值。例如,与Python 熊猫:根据唯一值获取行中对应的列值,python,pandas,Python,Pandas,我已经知道了如何获取我想要的信息,但如果没有更好、更可读的方法,我会感到惊讶 我想在保存我指定的数据元素的行中的另一列中获取值。例如,与a列中11的值相对应的b列中的值是什么 >>> 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] 这就是我目前解决这个问题的方法,但实际
a
列中11
的值相对应的b列中的值是什么
>>> 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]
这就是我目前解决这个问题的方法,但实际上,我的数据帧并没有这么简洁地命名,而且我有很长的字符串作为列名,所以这行很难阅读
编辑:如果“a”中的值不是唯一的,是否也有方法获取“b”中的所有对应值?您可以使用布尔掩码和loc
来返回满足布尔条件的所有行,这里我们使用条件“a”==11来屏蔽df,在满足条件的情况下,返回“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
你打错了。在你的第二段,“10”应该是“11”。