Python Dataframe:我如何执行等效的 vlookup

Python Dataframe: how do I perform vlookup equivalent

这是 df(它是更大 df 的子集)

df = pd.DataFrame({
                   'Date': ['04/03/2020', '06/04/2020','08/06/2020','12/12/2020'],
                    'Tval' : [0.01,0.015,-0.023,-0.0005]
})

如果我需要 Tval 来表示“06/04/2020”(我只需要一个日期)。我怎么得到它?我知道 merge 和 join 可用于复制 python 中的 vlookup 函数,但如果它是您要查找的单个值怎么办?执行任务的最佳方式是什么?

在数据框中选择是这样的:

df.loc[df.Date == '06/06/2020', "Tval"]

理解这一点的方法是:

df.Date=='06/06/2020'

Out: 
0    False
1    False
2    False
3    False
Name: Date, dtype: bool

生成一系列 True/False 值,显示日期列中的哪些行符合相等性。如果你给一个 DataFrame 这样的系列,它会 select 只输出系列为 True 的行。要了解这一点,请查看您从中得到了什么:

df.loc[df.Date=='06/06/2020']

Out[]: 
         Date   Tval
2  08/06/2020 -0.023

最后,要查看 'Tval' 的值,我们只需执行以下操作:

df.loc[df.Date == '06/06/2020', "Tval"]

Pandas 文档建议对大多数查找使用 lociloc

df = pd.DataFrame({
                   'Date': ['04/03/2020', '06/04/2020','08/06/2020','12/12/2020'],
                    'Tval' : [0.01,0.015,-0.023,-0.0005]
})

df.loc[df.Date == '06/04/2020', 'Tval']

括号中表达式的第一部分 df.Date == '06/04/2020' 选择您要查看的行的索引,第二部分指定您要显示的列。

如果您想查看整行的数据,可以re-write df.loc[df.Date == '06/04/2020', : ]