Python使用数据表和另一个表中的键和值吗?

时间:2019-01-18 17:49:34

标签: python pandas key

我目前正在使用的数据在主数据表中具有20多个变量(列),但是例如天气状况列具有键1或2或3等,并且还有另一个表用于查找键的值。每个带有键的变量都有自己的带有键值的表。在excel中,我将使用vlookups并将键替换为值,在哪里可以使用索引并最终用值解释它们的方法是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以将查找表转换为字典,然后使用Pandas的replace()方法将主数据框中的所有键转换为查找表中的较长描述。

这是一个例子:

假设您有一个名为df的数据框,其中有一个Weather列,如下所示:

    Weather
0   1
1   2
2   3
3   3
4   2
5   1
6   1
7   1
8   2
9   3

然后说您的查找表名为keys_df,看起来像这样:

    Key Meaning
0   1   Sunny
1   2   Cloudy
2   3   Rainy

首先请按照以下两个步骤将您的查询表keys_df转换为字典:

  1. 使用熊猫的set_index()方法将Key列设置为索引:

    keys_df = keys_df.set_index('Key')

  2. 然后使用Pandas的to_dict()方法从keys_df查找表创建字典:

    key_dict = keys_df.to_dict()

这时查找字典将如下所示:

{'Meaning': {1: 'Sunny', 2: 'Cloudy', 3: 'Rainy'}}

最后一步是使用replace()方法用其文本描述替换主数据帧Weatherdf列中的Meaning列中的每个数字,这些文本描述包含在to_dict()方法返回的字典中的df.loc[:,'Weather'] = df['Weather'].replace(key_dict['Meaning'])键:

Weather

这将使您的 Weather 0 Sunny 1 Cloudy 2 Rainy 3 Rainy 4 Cloudy 5 Sunny 6 Sunny 7 Sunny 8 Cloudy 9 Rainy 列如下所示:

library(tidyverse)
df <- tibble(a = list(list(number = 1, letter = "a"), list(number = 2, letter = "b")), b = c("c", "d"))
print(df)
#> # A tibble: 2 x 2
#>   a          b    
#>   <list>     <chr>
#> 1 <list [2]> c    
#> 2 <list [2]> d