各位大神新年好~~
我有一个疑问想求助下各位,举例如下:
这是个主数据集(main)
| id | age | sex |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 1 | 1 |
4 | 2 | 1 |
5 | 1 | nan |
6 | 2 | 2 |
7 | 3 | 2 |
8 | 2 | 1 |
这个是映射数据集sub(可以理解为一个字典)
| Var | group | value |
| age | 1 | 123 |
| age | 2 | 234 |
| age | 3 | 345 |
| sex | 1 | 456 |
| sex | 2 | 567 |
| sex | nan | 678 |
这是映射的结果(举了id = 1,2的情况)
现在的状况是:
这个主数据集非常非常大,几十万甚至百万观测、变量有将近500个
我其实想拿第二个映射数据集对主数据集的每个元素做映射
我是这么写的:
1. 先把sub数据集的值做成个字典dict,例如dict['age'][1] -> 123
2. 然后用这个字典对main做遍历,如:main.apply(lambda x:x.replace(dict[x.name]))
意思就是先用apply函数遍历取变量,每列变量取出来后取和这个变量对应的字典,然后再用replace方法去对整列数据做映射
等了30分钟都出不来,最后核死
SAS中可以用input+format,或者用hash table,python中请问有没有好的办法呢?
这种多维映射很头疼,求助各位大神