首页 > 解决方案 > 与文件名匹配的索引

问题描述

我有一个关于索引和值选择的问题。我有一个主要的 python 脚本,我在其中循环大量文件。然后将每个文件用作我的代码中的输入以执行一些操作。对于这些操作,我还需要每个输入的面积值 (x,y)。我为此创建了一个数据框,其中输入名称(gauge_id)作为索引,列中包含区域的值。我想为其对应的 gauge_id 选择 Area 的值。Gauge_id 与输入 x 同名。如何选择df2的gauge_id作为输入x的对应名称?

例子:

输入 x= 1001 然后我希望 df2 的值与索引 gauge_id 1001 匹配。

def dataprocessing(x,y):
    
    A = pd.read_csv('camels_br_location.txt', delimiter=' ', header=None, skiprows=1, names=['gauge_id','gauge_name','gauge_region','gauge_lat','gauge_lon','area_ana','area_gsim','area_gsim_quality'])
    A.columns = A.columns.str.replace(' ', ',')
    A.index = A['gauge_id']
    df2 = pd.DataFrame()
    df2['Area'] = A['area_gsim']
    Area = *10**3 #Area catchment in m2
    print(Area)

标签: pythonindexing

解决方案


def dataprocessing(x):
    A = pd.read_csv(
      'camels_br_location.txt', 
      delimiter=' ', 
      header=None, 
      skiprows=1, 
      names=['gauge_id','gauge_name','gauge_region','gauge_lat','gauge_lon','area_ana','area_gsim','area_gsim_quality'],
      index_col='gauge_id')
 
    return A.loc[x, :]['area_gsim']*10**3

结果是:

x = 10100000
print(dataprocessing(x)) # return 883138500.0

推荐阅读