社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何使用python为数据表中的每一行创建将在字典中返回值的函数?

Amanda Elizabeth • 5 年前 • 1325 次点击  

我需要在表中为状态区域创建一个新列,该状态区域为每行数据(每行都有一个状态)填充一个区域。如何编写一个函数来为每一行项调用字典?

我有大约30000行项目,我相信一个循环将花费太长时间。我肯定有办法用字典做到这一点。我试过使用不同的方法来调用它,但似乎无法让它填充正确的数据。

states = {
        'AK': 'Alaska',
        'AL': 'Alabama',
        'AR': 'Arkansas',
        'AZ': 'Arizona',
        'CA': 'California',
        'CO': 'Colorado',
        'CT': 'Connecticut',
        'DC': 'District of Columbia',
        'DE': 'Delaware',
        'FL': 'Florida',
        'GA': 'Georgia',
        'HI': 'Hawaii',
        'IA': 'Iowa',
        'ID': 'Idaho',
        'IL': 'Illinois',
        'IN': 'Indiana',
        'KS': 'Kansas',
        'KY': 'Kentucky',
        'LA': 'Louisiana',
        'MA': 'Massachusetts',
        'MD': 'Maryland',
        'ME': 'Maine',
        'MI': 'Michigan',
        'MN': 'Minnesota',
        'MO': 'Missouri',
        'MS': 'Mississippi',
        'MT': 'Montana',
        'NC': 'North Carolina',
        'ND': 'North Dakota',
        'NE': 'Nebraska',
        'NH': 'New Hampshire',
        'NJ': 'New Jersey',
        'NM': 'New Mexico',
        'NV': 'Nevada',
        'NY': 'New York',
        'OH': 'Ohio',
        'OK': 'Oklahoma',
        'OR': 'Oregon',
        'PA': 'Pennsylvania',
        'RI': 'Rhode Island',
        'SC': 'South Carolina',
        'SD': 'South Dakota',
        'TN': 'Tennessee',
        'TX': 'Texas',
        'UT': 'Utah',
        'VA': 'Virginia',
        'VT': 'Vermont',
        'WA': 'Washington',
        'WI': 'Wisconsin',
        'WV': 'West Virginia',
        'WY': 'Wyoming'
}

state_abbrev = {v: k for k, v in states.items()}

state_code = {
    'AK': '10','AL': '4', 'AR': '9', 'AR': '6', 'CA': '9', 'CO': '8',  'CT': '1', 'DC': '3', 'DE': '3', 'FL': '4',
'GA': '4', 'HI': '9', 'IA': '7', 'ID': '10', 'IL': '5', 'IN': '5', 'KS': '7', 'KY': '4', 'LA': '6', 
'MA': '1', 'MD': '3', 'ME': '1', 'MI': '5', 'MN': '5','MO': '7', 'MS': '4', 'MT': '8', 'NC': '4', 
'ND': '8', 'NE': '7', 'NH': '1', 'NJ': '2', 'NM': '6','NV': '9', 'NY': '2', 'OH': '5', 'OK': '6', 
'OR': '10', 'PA': '3', 'PR': '2', 'RI': '1', 'SC': '4', 'SD': '8', 'TN': '4', 'TX': '6', 'UT': '8',
'VA': '3', 'VI': '2', 'VT': '1', 'WA': '10', 'WI': '5', 'WV': '3', 'WY': '8', 'PI': '9'
    }

state_region = {v: k for k, v in state_code.items()}

def get_region(): return[在fulldf中为i返回州/地区[i]['state']]

fulldf[“region”]=获取区域() 全方位。尾部()

返回键错误'ma',期望返回名为“region”的新列,该列为列出的每个“state”填充区域。

KeyError                                  Traceback (most recent call last)
<ipython-input-338-6afc1e48556a> in <module>
 33     return [state_region[i] for i in fulldf['state']]
 34 
---> 35 fulldf["Region"] = get_region()
 36 fulldf.tail()
 37 

<ipython-input-338-6afc1e48556a> in get_region()
 31 
 32 def get_region():
---> 33     return [state_region[i] for i in fulldf['state']]
 34 
 35 fulldf["Region"] = get_region()

<ipython-input-338-6afc1e48556a> in <listcomp>(.0)
 31 
 32 def get_region():
---> 33     return [state_region[i] for i in fulldf['state']]
 34 
 35 fulldf["Region"] = get_region()

KeyError: 'MA'
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46784
 
1325 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Serge Ballesta
Reply   •   1 楼
Serge Ballesta    6 年前

你的 get_region 功能有缺陷。应该是:

def get_region():
    return [state_region[i] for i in fulldf['state']]

python的理解经过了足够的优化,使得该函数对于一个30k长的数据帧来说是合适的。