python - 基本的 python vlookup 等价物

标签 python

我正在寻找与 Excel 中的 vlookup 函数等效的函数。我有一个脚本,我在其中读取了一个 csv 文件。我希望能够从 .csv 中的另一列查询关联值。到目前为止的脚本:

import matplotlib
import matplotlib.mlab as mlab
import glob

for files in glob.glob("*.csv"):
    print files

    r = mlab.csv2rec(files)
    r.cols = r.dtype.names

    depVar = r[r.cols[0]]
    indVar = r[r.cols[1]]
    print indVar

这将从脚本所在的同一文件夹中的 .csv 文件中读取。在上面的示例中,depVar 是 .csv 中的第一列,indVar 是第二列。在我的例子中,我知道 indVar 的值,并且我想返回 depVar 的关联值。我想添加如下命令:

depVar = r[r.cols[0]]
indVar = r[r.cols[1]]
print indVar
depVarAt5 = lookup value in depVar where indVar = 5 (I could sub in things for the 5 later)

在我的例子中,所有字段中的所有值都是数字,并且 indVar 的所有值都是唯一的。我希望能够定义一个等于关联值的新变量(上一个示例中的 depVarAt5)。

这是示例 .csv 内容,将文件命名为任意名称并将其放在与脚本相同的文件夹中。在此示例中,depVarAt5 应设置为等于 16.1309。

Temp,Depth
16.1309,5
16.1476,94.4007
16.2488,100.552
16.4232,106.573
16.4637,112.796
16.478,118.696
16.4961,124.925
16.5105,131.101
16.5462,137.325
16.7016,143.186
16.8575,149.101
16.9369,155.148
17.0462,161.187

最佳答案

我认为这可以很直接地解决您的问题:

import numpy
import glob

for f in glob.glob("*.csv"):
    print f

    r = numpy.recfromcsv(f)
    print numpy.interp(5, r.depth, r.temp)

我很确定 numpy 是 matplotlib 的先决条件。

关于python - 基本的 python vlookup 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868276/

相关文章:

python - 计算未被任何一组区间覆盖的最小正整数

Python:矢量化/广播会提高速度吗?

python - 在 Python 中将方法动态绑定(bind)到类实例

python - 迭代数据框仅返回列标题

python - 高级 Python 调度程序和 SQLAlchemyJobStore

python - 云 Composer Airflow 引发错误 : Broken DAG: cannot import name '_parse_data' when importing new dag

python - 如何处理BDD中的环境先决条件?

python - 类型错误 : 'Tensor' object cannot be interpreted as an integer

python - 在 Python 3.1.1 中生成密码

python - 是否有必要使用 SWIG 在接口(interface)文件中提及包装的 .c 文件的所有函数?