Python 如何根据数据帧中某列的值获取另一列中某个值的标量?
我有一个数据框,有两列Python 如何根据数据帧中某列的值获取另一列中某个值的标量?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,有两列a和B。我想根据列A的值取列B的标量。我使用了loc和.value[0] 我的数据量比较小,主要问题是看代码的语法是否正确.value似乎已被弃用 import pandas as pd import numpy as np df = pd.DataFrame() df[['A', 'B']] = pd.DataFrame(np.arange(10).reshape((5, 2))) df1 = df.loc[df['A'] == 4, 'B'].values[0] pr
a
和B
。我想根据列A
的值取列B
的标量。我使用了loc
和.value
[0]
我的数据量比较小,主要问题是看代码的语法是否正确
.value
似乎已被弃用
import pandas as pd
import numpy as np
df = pd.DataFrame()
df[['A', 'B']] = pd.DataFrame(np.arange(10).reshape((5, 2)))
df1 = df.loc[df['A'] == 4, 'B'].values[0]
print(df1)
结果是
5
这个代码可以优化吗
df1 = df.loc[df['A'] == 4, 'B'].values[0]
如果需要优化,并在条件失败时返回一些值,请使用
next
和iter
:
a = next(iter(df.loc[df['A'] == 4, 'B']), 'no match')
print (a)
5
a = next(iter(df.loc[df['A'] == 1000, 'B']), 'no match')
print (a)
no match
如果可以使用始终匹配的值,但如果不匹配则失败,因此最好不要使用:
df.loc[df['A'] == 4, 'B'].to_numpy()[0]
#but this failed
#df.loc[df['A'] == 1000, 'B'].to_numpy()[0]
您可以使用
to\u numpy()[0]
代替value[0]
。这可能会运行得快一点。不确定这是否更快df。在[4,'B']处设置索引('a')
。另外,您当前的代码可以写成df.loc[df['A']==4,'B'].item()
。同样,您可能需要测试我的数据量是否相对较小,主要问题是看代码的语法是否正确.value
似乎已被弃用。@MayankPorwal-Ya,然后我重新打开。因为我认为.to_numpy()
这里的用法不是个好主意(补充回答为什么)@jezrael我认为OP只是需要验证他的语法。因此,to_numpy
是一个非常好的答案。但同样,与你讨论这件事毫无意义。谢谢你。