我目前正在使用的数据在主数据表中具有20多个变量(列),但是例如天气状况列具有键1或2或3等,并且还有另一个表用于查找键的值。每个带有键的变量都有自己的带有键值的表。在excel中,我将使用vlookups并将键替换为值,在哪里可以使用索引并最终用值解释它们的方法是什么?
谢谢
答案 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
转换为字典:
使用熊猫的set_index()方法将Key
列设置为索引:
keys_df = keys_df.set_index('Key')
然后使用Pandas的to_dict()方法从keys_df
查找表创建字典:
key_dict = keys_df.to_dict()
这时查找字典将如下所示:
{'Meaning': {1: 'Sunny', 2: 'Cloudy', 3: 'Rainy'}}
最后一步是使用replace()方法用其文本描述替换主数据帧Weather
中df
列中的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