Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据数据帧中某列的值获取另一列中某个值的标量?_Python_Pandas_Dataframe - Fatal编程技术网

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
是一个非常好的答案。但同样,与你讨论这件事毫无意义。谢谢你。