繁体   English   中英

我需要用户输入从一个数据帧指向另一个并显示第二个数据帧 python 中的一列

[英]I need user input to point from one dataframe to another and display a column from the second dataframe-python

我有 2 个熊猫数据框:

  1. 状态缩写和状态。 在此处输入图片说明
  2. 州名和每个州的所有国家公园。 这不是整个数据框。 在此处输入图片说明

我需要在 state 数据框中搜索用户输入,在这种情况下是 state 缩写,然后获取相邻值、全名并使用它来显示 park 数据框中的正确列。 我相信如果它们是一个数据框会更容易,但我无法找到一种方法来做到这一点并保留所有功能; 我希望能够为用户显示状态数据框。 任何建议将不胜感激。 这是我的代码。 在第 72 行左右,我可以使用帮助。 在保持这个功能的同时,我尽可能地保留了它,这是一个很大的程序,但这是我迄今为止最大的问题。 谢谢你

def main():
if __name__ == "__main__":
    import pandas as pd
    import numpy as np
    from tabulate import tabulate

def parks():
    park_dict = {'Alaska': ['DENA', 'Denali National Park and Preserve', 'GAAR', 'Gates of the Arctic National Park', 'GLBA',
                   'Glacier Bay National Park', 'KATM', 'Katmai National Park and Preserve', 'KEFJ',
                   'Kenai Fjords National Park', 'KOVA', 'Kobuk Valley National Park', 'LACLk', 'Lake Clark National Park',
                   'WRST', 'Wrangell – St Elias National Park and Preserve'],
        'American_Samoa': ['NSPA', 'National Park of American Samoa','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Arizona': ['GRCA', 'Grand Canyon National Park', 'PEFO', 'Petrified Forest National Park', 'SAGU',
                    'Saguaro National Park','.','.','.','.','.','.','.','.','.','.'],
        'Arkansas': ['HOSP', 'Hot Springs National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'California': ['CHIS', 'Channel Islands National Park', 'DVNP', 'Death Valley National Park', 'JOTR',
                       'Joshua Tree National Park', 'KICA', 'Kings Canyon National Park', 'LAVO',
                       'Lassen Volcanic National Park', 'REDW', 'Redwood National Park', 'SEKI',
                       'Sequoia National Park', 'YOSE','Yosemite National Park'],
        'Caolorado': ['BLCA', 'Black Canyon of the Gunnison National Park', 'GRSA',
                      'Great Sand Dunes National Park and Preserve', 'MEVE', 'Mesa Verde National Park',
                      'ROMO','Rocky Mountain National Park','.','.','.','.','.','.','.','.'],
        'Florida': ['BISC', 'Biscayne National Park', 'DRTO', 'Dry Tortugas National Park', 'EVER',
                    'Everglades National Park','.','.','.','.','.','.','.','.','.','.'],
        'Hawaii': ['HALE', 'Haleakala National Park', 'HAVO', 'Hawaii Volcanoes National Park','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Kentucky': ['MACA', 'Mammoth Cave National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Maine': ['ACAD', 'Acadia National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Michigan': ['ISRO', 'Isle Royale National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Minnesota': ['VOYA', 'Voyageurs National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Montana': ['GLAC', 'Glacier National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Nevada': ['GRBA', 'Great Basin National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'New_Mexico': ['CAVE', 'Carlsbad Caverns National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'North_Carolina': ['GRSM', 'Great Smoky Mountains National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'North_Dakota': ['THRO', 'Theodore Roosevelt National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Ohio': ['CUVA', 'Cuyahoga Valley National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Oregon': ['CRLA', 'Crater Lake National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'South_Carolina': ['COSW', 'Congaree National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'South_Dakota': ['BADL', 'Badlands National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Tennessee': ['GRSM', 'Great Smoky Mountains National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Texas': ['BIBE', 'Big Bend National Park', 'GUMO', 'Guadalupe Mountains National Park','','','','','','','','','','','',''],
        'US_Virgin_Islands': ['VIIS', 'Virgin Islands National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Utah': ['ARCH', 'Arches National Park', 'BRCA', 'Bryce Canyon National Park', 'CANY',
                 'Canyonlands National Park', 'CARE', 'Capitol Reef National Park', 'ZION', 'Zion National Park','.','.','.','.','.','.'],
        'Virginia': ['SHEN', 'Shenandoah National Park','.','.','.','.','.','.','.','.','.','.','.','.','.','.'],
        'Washington': ['MORA ', 'Mount Rainier National Park ', 'NOCA', 'North Cascades National Park', 'OLYM',
                       'Olympic National Park','.','.','.','.','.','.','.','.','.','.'],
        'Wyoming': ['GRTE', 'Grand Teton National Park', 'YELL', 'Yellowstone National Park','.','.','.','.','.','.','.','.','.','.','.','.']}
    df = pd.DataFrame(park_dict)
    df.index = np.arange(1, len(df) + 1)
    #print(tabulate(df, headers='keys', tablefmt='simple'))
    return''

def choose_state():
    state_list = [['AK', 'Alaska', 'AS', 'American Samoa', 'AZ', 'Arizona', 'AR', 'Arkansas'],
                  ['CA', 'California', 'CO', 'Colorado', 'FL', 'Florida', 'HI', 'Hawaii'],
                  ['KY', 'Kentucky', 'ME', 'Maine', 'MI', 'Michigan', 'MN', 'Minnesota'],
                  ['MT', 'Montana', 'NV', 'Nevada', 'NM', 'New Mexico', 'NC', 'North Carolina'],
                  ['ND', 'North Dakota', 'OH', 'Ohio', 'OR', 'Oregon', 'SC', 'South Carolina'],
                  ['SD', 'South Dakota', 'TN', 'Tennessee', 'TX', 'Texas', 'USVI', 'US Vergin Islands'],
                  ['UT', 'Utah', 'VA', 'Virginia', 'WA', 'Washington', 'WY', 'Wyoming']]

    statedf = pd.DataFrame(state_list, columns=['Abbr', 'State', 'Abbr', 'State', 'Abbr', 'State', 'Abbr', 'State'])
    print(tabulate(statedf, headers='keys', tablefmt='simple', showindex=False))
    while True:
        print('\nEnter the abreviation for the state you will visit\nR - Return tp previous menu\nQ - Quit')
        try:
            entry = str(input('\n').upper())
            if not entry.isalpha():
                print('please enter letters only.')
                choose_state()
                '''
                # if entry == (state abbr) in state_list, then take the full name of the state and look in (park_dict) and display the correct column)
                '''
                print(tabulate(park_dict, headers='keys', tablefmt='simple'))  # print correct column from park_dict

            elif entry == str('R'):
                choose_state()
            elif entry == str('Q'):
                print('Have a nice day.')
                exit()
            else:
                print('please enter 2 letter state abreviation.')
        except ValueError:
            print('Invalid entry')
            choose_state()
            break
    return ''

def main_menu():
    print('Select choice from menu:\n\n'
          '1 - not ready\n'
          '2 - Select state and National Park you are visiting\n'
          '3 - Quit')

    while True:
        try:
            menu_choice = int(input('\n'))
            if menu_choice == int(1):
                print('ok')
                exit()
            elif menu_choice == int(2):
                choose_state()
                break
            elif menu_choice == int(3):
                print('Exiting program')
                exit()
            else:
                print('Value not recognized.')
                exit()
        except ValueError:
            print('Invalid entry, please enter 1,2, or 3.')
            main_menu()
    return ''

print(main_menu())

主要的()

更新:我按照下面的 MashodRana 建议更改了我的代码,它确实有助于清理它,但它工作得不太正确。我不断收到属性错误。 我打算把字典当作 csv 文件来帮助清理,但我认为它应该可以工作。

这些是错误: raise AttributeError(f"module 'pandas' has no attribute '{name}'") AttributeError: module 'pandas' has no attribute 'tabulate'

import pandas as pd
import numpy as np
from tabulate import tabulate
import csv



park_dict = {
    'Alaska': ['DENA', 'Denali National Park and Preserve', 'GAAR', 'Gates of the Arctic National Park', 'GLBA',
                   'Glacier Bay National Park', 'KATM', 'Katmai National Park and Preserve', 'KEFJ',
                   'Kenai Fjords National Park', 'KOVA', 'Kobuk Valley National Park', 'LACLk',
                   'Lake Clark National Park',
                   'WRST', 'Wrangell – St Elias National Park and Preserve'],
    'American_Samoa': ['NSPA', 'National Park of American Samoa', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                           '.', '.', '.', '.'],
    'Arizona': ['GRCA', 'Grand Canyon National Park', 'PEFO', 'Petrified Forest National Park', 'SAGU',
                    'Saguaro National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'],
    'Arkansas': ['HOSP', 'Hot Springs National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                     '.', '.'],
    'California': ['CHIS', 'Channel Islands National Park', 'DVNP', 'Death Valley National Park', 'JOTR',
                       'Joshua Tree National Park', 'KICA', 'Kings Canyon National Park', 'LAVO',
                       'Lassen Volcanic National Park', 'REDW', 'Redwood National Park', 'SEKI',
                       'Sequoia National Park', 'YOSE', 'Yosemite National Park'],
    'Colorado': ['BLCA', 'Black Canyon of the Gunnison National Park', 'GRSA',
                      'Great Sand Dunes National Park and Preserve', 'MEVE', 'Mesa Verde National Park',
                      'ROMO', 'Rocky Mountain National Park', '.', '.', '.', '.', '.', '.', '.', '.'],
    'Florida': ['BISC', 'Biscayne National Park', 'DRTO', 'Dry Tortugas National Park', 'EVER',
                    'Everglades National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'],
    'Hawaii': ['HALE', 'Haleakala National Park', 'HAVO', 'Hawaii Volcanoes National Park', '.', '.', '.', '.', '.',
                   '.', '.', '.', '.', '.', '.', '.'],
    'Kentucky': ['MACA', 'Mammoth Cave National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                     '.', '.'],
    'Maine': ['ACAD', 'Acadia National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'],
    'Michigan': ['ISRO', 'Isle Royale National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                     '.', '.'],
    'Minnesota': ['VOYA', 'Voyageurs National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                      '.', '.'],
    'Montana': ['GLAC', 'Glacier National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                    '.'],
    'Nevada': ['GRBA', 'Great Basin National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                   '.'],
    'New_Mexico': ['CAVE', 'Carlsbad Caverns National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                       '.', '.', '.'],
    'North_Carolina': ['GRSM', 'Great Smoky Mountains National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                           '.', '.', '.', '.', '.'],
    'North_Dakota': ['THRO', 'Theodore Roosevelt National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                         '.', '.', '.', '.'],
    'Ohio': ['CUVA', 'Cuyahoga Valley National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                 '.', '.'],
    'Oregon': ['CRLA', 'Crater Lake National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                   '.'],
    'South_Carolina': ['COSW', 'Congaree National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                           '.', '.'],
    'South_Dakota': ['BADL', 'Badlands National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                         '.', '.'],
    'Tennessee': ['GRSM', 'Great Smoky Mountains National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                      '.', '.', '.', '.'],
    'Texas': ['BIBE', 'Big Bend National Park', 'GUMO', 'Guadalupe Mountains National Park', '', '', '', '', '', '',
                  '', '', '', '', '', ''],
    'US_Virgin_Islands': ['VIIS', 'Virgin Islands National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                              '.', '.', '.', '.'],
    'Utah': ['ARCH', 'Arches National Park', 'BRCA', 'Bryce Canyon National Park', 'CANY',
                 'Canyonlands National Park', 'CARE', 'Capitol Reef National Park', 'ZION', 'Zion National Park', '.',
                 '.', '.', '.', '.', '.'],
    'Virginia': ['SHEN', 'Shenandoah National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.',
                     '.', '.'],
    'Washington': ['MORA ', 'Mount Rainier National Park ', 'NOCA', 'North Cascades National Park', 'OLYM',
                       'Olympic National Park', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'],
    'Wyoming': ['GRTE', 'Grand Teton National Park', 'YELL', 'Yellowstone National Park', '.', '.', '.', '.', '.',
                    '.', '.', '.', '.', '.', '.', '.']}
pdf = pd.DataFrame(park_dict)
pdf.index = np.arange(1, len(pdf) + 1)
#print(tabulate(pdf, headers='keys', tablefmt='simple'))
pdf.to_csv(r'park_dict.csv')



state_list = [['AK', 'Alaska', 'AS', 'American Samoa', 'AZ', 'Arizona', 'AR', 'Arkansas'],
                  ['CA', 'California', 'CO', 'Colorado', 'FL', 'Florida', 'HI', 'Hawaii'],
                  ['KY', 'Kentucky', 'ME', 'Maine', 'MI', 'Michigan', 'MN', 'Minnesota'],
                  ['MT', 'Montana', 'NV', 'Nevada', 'NM', 'New Mexico', 'NC', 'North Carolina'],
                  ['ND', 'North Dakota', 'OH', 'Ohio', 'OR', 'Oregon', 'SC', 'South Carolina'],
                  ['SD', 'South Dakota', 'TN', 'Tennessee', 'TX', 'Texas', 'USVI', 'US Virgin Islands'],
                  ['UT', 'Utah', 'VA', 'Virginia', 'WA', 'Washington', 'WY', 'Wyoming']]

sdf = pd.DataFrame(state_list, columns=['Abbr', 'State', 'Abbr', 'State', 'Abbr', 'State', 'Abbr', 'State'])
sdf = pd.DataFrame({'abbr': sdf['Abbr'].values.flatten(), 'state': sdf['State'].values.flatten()})
#sdf.to_csv(r'state_dict.csv')
#print(tabulate(sdf, headers='keys', tablefmt='simple', showindex=False))

def trail_finder():
    with open('AllTrails data.csv', 'r') as f:
        all_park_data = csv.reader(f)
        all_park_info = list(all_park_data)
#   print('\n'.join(' '.join(elems) for elems in all_park_info)) #just to verify data
    f.close()


def main():



    def choose_destination():
        print(tabulate(sdf, headers='keys', tablefmt='simple', showindex=False))
        # user input
        entry = str(input('Enter the abreviation for the state you will visit:\n').upper())
        while True:
            try:
                val = sdf[sdf['abbr'] == entry]
                state_name = val.values.flatten()[1]
                print(pd.tabulate(pdf))
                ndf = {state_name: pdf[state_name].values}
                print(tabulate(ndf, headers='keys', tablefmt='simple'))
                # error checking
                if not entry.isalpha():
                    print('please enter letters only.')
                else:
                    print('please enter 2 letter state abreviation.')
            except ValueError:
                print('Invalid entry')
                break
        return ''

    def fitness_menu():
        print('1 - Determine fitness level\n2 - proceed to Trail Finder\n3 - Quit')
        while True:
            try:
                menu_choice = int(input('\n'))
                if menu_choice == int(1):
                    print('FIXME- build fitness level code')
                    break
                elif menu_choice == int(2):
                    choose_destination()
                    break
                elif menu_choice == int(3):
                    print('Exiting program')
                    exit()
                else:
                    print('Invalid entry, please enter 1, 2, or 3.')
                    exit()
            except ValueError:
                print(ValueError)
                exit()
        return ''


    def entrance_menu():

        print('Select choice from menu:\n\n'
            '1 - To use fitness calculator to determine fitness level(optional) \n'
            '2 - To choose destination\n'
            '3 - To Quit')

        while True:
            try:
                menu_choice = int(input('\n'))
                if menu_choice == int(1):
                    fitness_menu()
                    break
                elif menu_choice == int(2):
                    choose_destination()
                    break
                elif menu_choice == int(3):
                    print('Exiting program')
                    exit()
                else:
                    print('Invalid entry, please enter 1, 2, or 3.')
                    entrance_menu()
            except ValueError:
                print(ValueError)
                exit()
        return ''

    entrance_menu()


main()

您可以通过以下方式完成任务:

将所有状态和缩写合并为一列

sdf = pd.DataFrame({'abbr':statedf['Abbr'].values.flatten(),'state':statedf['State'].values.flatten()})

将缩写搜索到sdf (状态数据框)中,提取出对应的完整形式

val = sdf[sdf['abbr']==entry]
state_name = val.values.flatten()[1]

最后从pdf (公园数据框)中显示与州名对应的公园

ndf = {state_name:pdf[state_name].values}
print(tabulate(ndf, headers='keys', tablefmt='simple', showindex=False))

注意:请将您的公园和州保存为 CSV 文件。 然后将它们加载到您的程序中。 不要对相同类型的值使用不同的列,例如“state”和“abbreviation”。如果您愿意,您可以通过多种方式改进您的代码。

您面临的主要问题是由于您的数据是非结构化的。 要解决此问题,您应该像这样组织您的数据,这是一种“整洁”的形式,请参见此处

STATE_DICT = {
    'state_name': {
        'AK': 'Alaska',
        'AS': 'American Samoa',
        'AZ': 'Arizona',
        'AR': 'Arkansas',
        'CA': 'California',
        'CO': 'Colorado',
        'FL': 'Florida',
        'HI': 'Hawaii',
        'KY': 'Kentucky',
        'ME': 'Maine',
        'MI': 'Michigan',
        'MN': 'Minnesota',
        'MT': 'Montana',
        'NV': 'Nevada',
        'NM': 'New Mexico',
        'NC': 'North Carolina',
        'ND': 'North Dakota',
        'OH': 'Ohio',
        'OR': 'Oregon',
        'SC': 'South Carolina',
        'SD': 'South Dakota',
        'TN': 'Tennessee',
        'TX': 'Texas',
        'USVI': 'US Vergin Islands',
        'UT': 'Utah',
        'VA': 'Virginia',
        'WA': 'Washington',
        'WY': 'Wyoming'}
}

PARKS_DICT = {
    'state_name': {
        'DENA': 'Alaska',
        'GAAR': 'Alaska',
        'GLBA': 'Alaska',
        'KATM': 'Alaska',
        'KEFJ': 'Alaska',
        'KOVA': 'Alaska',
        'LACLk': 'Alaska',
        'WRST': 'Alaska',
        'NSPA': 'American_Samoa',
        'GRCA': 'Arizona',
        'PEFO': 'Arizona',
        'SAGU': 'Arizona',
        'HOSP': 'Arkansas',
        'CHIS': 'California',
        'DVNP': 'California',
        'JOTR': 'California',
        'KICA': 'California',
        'LAVO': 'California',
        'REDW': 'California',
        'SEKI': 'California',
        'YOSE': 'California',
        'BLCA': 'Caolorado',
        'GRSA': 'Caolorado',
        'MEVE': 'Caolorado',
        'ROMO': 'Caolorado',
        'BISC': 'Florida',
        'DRTO': 'Florida',
        'EVER': 'Florida',
        'HALE': 'Hawaii',
        'HAVO': 'Hawaii',
        'MACA': 'Kentucky',
        'ACAD': 'Maine',
        'ISRO': 'Michigan',
        'VOYA': 'Minnesota',
        'GLAC': 'Montana',
        'GRBA': 'Nevada',
        'CAVE': 'New_Mexico',
        'GRSM': 'Tennessee',
        'THRO': 'North_Dakota',
        'CUVA': 'Ohio',
        'CRLA': 'Oregon',
        'COSW': 'South_Carolina',
        'BADL': 'South_Dakota',
        'BIBE': 'Texas',
        'GUMO': 'Texas',
        'VIIS': 'US_Virgin_Islands',
        'ARCH': 'Utah',
        'BRCA': 'Utah',
        'CANY': 'Utah',
        'CARE': 'Utah',
        'ZION': 'Utah',
        'SHEN': 'Virginia',
        'MORA': 'Washington',
        'NOCA': 'Washington',
        'OLYM': 'Washington',
        'GRTE': 'Wyoming',
        'YELL': 'Wyoming'},
    'park_name': {
        'DENA': 'Denali National Park and Preserve',
        'GAAR': 'Gates of the Arctic National Park',
        'GLBA': 'Glacier Bay National Park',
        'KATM': 'Katmai National Park and Preserve',
        'KEFJ': 'Kenai Fjords National Park',
        'KOVA': 'Kobuk Valley National Park',
        'LACLk': 'Lake Clark National Park',
        'WRST': 'Wrangell – St Elias National Park and Preserve',
        'NSPA': 'National Park of American Samoa',
        'GRCA': 'Grand Canyon National Park',
        'PEFO': 'Petrified Forest National Park',
        'SAGU': 'Saguaro National Park',
        'HOSP': 'Hot Springs National Park',
        'CHIS': 'Channel Islands National Park',
        'DVNP': 'Death Valley National Park',
        'JOTR': 'Joshua Tree National Park',
        'KICA': 'Kings Canyon National Park',
        'LAVO': 'Lassen Volcanic National Park',
        'REDW': 'Redwood National Park',
        'SEKI': 'Sequoia National Park',
        'YOSE': 'Yosemite National Park',
        'BLCA': 'Black Canyon of the Gunnison National Park',
        'GRSA': 'Great Sand Dunes National Park and Preserve',
        'MEVE': 'Mesa Verde National Park',
        'ROMO': 'Rocky Mountain National Park',
        'BISC': 'Biscayne National Park',
        'DRTO': 'Dry Tortugas National Park',
        'EVER': 'Everglades National Park',
        'HALE': 'Haleakala National Park',
        'HAVO': 'Hawaii Volcanoes National Park',
        'MACA': 'Mammoth Cave National Park',
        'ACAD': 'Acadia National Park',
        'ISRO': 'Isle Royale National Park',
        'VOYA': 'Voyageurs National Park',
        'GLAC': 'Glacier National Park',
        'GRBA': 'Great Basin National Park',
        'CAVE': 'Carlsbad Caverns National Park',
        'GRSM': 'Great Smoky Mountains National Park',
        'THRO': 'Theodore Roosevelt National Park',
        'CUVA': 'Cuyahoga Valley National Park',
        'CRLA': 'Crater Lake National Park',
        'COSW': 'Congaree National Park',
        'BADL': 'Badlands National Park',
        'BIBE': 'Big Bend National Park',
        'GUMO': 'Guadalupe Mountains National Park',
        'VIIS': 'Virgin Islands National Park',
        'ARCH': 'Arches National Park',
        'BRCA': 'Bryce Canyon National Park',
        'CANY': 'Canyonlands National Park',
        'CARE': 'Capitol Reef National Park',
        'ZION': 'Zion National Park',
        'SHEN': 'Shenandoah National Park',
        'MORA': 'Mount Rainier National Park',
        'NOCA': 'North Cascades National Park',
        'OLYM': 'Olympic National Park',
        'GRTE': 'Grand Teton National Park',
        'YELL': 'Yellowstone National Park'}
}

这样,您可以轻松查询您感兴趣的数据,如下所示:

# make your dataframes:
states = pd.DataFrame(STATE_DICT).rename_axis('state_abbrev')
parks = pd.DataFrame(PARKS_DICT).rename_axis('park_abbrev')

# query
state_abbrev = input('enter state abbreviation: ')
state_name = states.loc[state_abbrev, 'state_name']
parks_list = parks.loc[parks.state_name == state_name]

或者您可以将表合并在一起并直接查找状态缩写:

df_joined = pd.merge(states.reset_index(), parks.reset_index(), on='state_name', how='inner')
parks_list = df_joined[df_joined.state_abbrev == state_abbrev]

这就是数据库的组织方式,可以减少冗余和错误。 说到错误,看起来您对应该都具有相同名称的事物的名称不一致(即,“Caolorado”而不是“Colorado”或“US_Virgin_Islands”和“US Vergin Islands”而不是“US Virgin Islands”)。 像这样排列数据应该可以帮助您减轻这些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM