python - 标签不在[index]中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python - 标签不在[index]中相关的知识,希望对你有一定的参考价值。

我正在使用for循环来创建一个函数,通过查看每行中的方向值,返回基于条件的方向。我已将整个数据集拆分为两个。我在用:

def dir_func(df):
for i in df.index:
    if df.loc[i,'dir_1'] == ['E' or 'NE' or 'SE']:
        df.loc[i,'dir_fin'] = 'E'
    elif df.loc[i,'dir_1'] == ['W' or 'NW' or 'SW']:
        df.loc[i,'dir_fin'] = 'W'
    else:
        if df.loc[i,'dir_2'] == ['E' or 'NE' or 'SE']:
            df.loc[i,'dir_fin'] = 'E' 
        elif df.loc[i,'dir_2'] == ['W' or 'NW' or 'SW']:
            df.loc[i,'dir_fin'] = 'W'
        else:
            if (pd.Series(df.loc[i,'loc_01']).str.contains(
                ("sEBs" or "sEasts" or "sEastbound" or "sEs"),case=False) 
            | pd.Series(speed_overspeed.loc[i,'loc_02']).str.contains(
                ("sEBs" or "sEasts" or "sEastbound" or "sEs"),case=False)).bool()==True:
                df.loc[i,'dir_fin'] = 'E' 
            elif (pd.Series(df.loc[i,'loc_01']).str.contains(
                ("sWBs" or "sWests" or "sWestbound" or "sWs"),case=False) 
            | pd.Series(speed_overspeed.loc[i,'loc_02']).str.contains(
                ("sWBs" or "sWests" or "sWestbound" or "sWs"),case=False)).bool()==True:
                df.loc[i,'dir_fin'] = 'W' 
            else:
                df.loc[i,'dir_fin'] = 'NA'

迭代。

此函数适用于我的第一个分割数据集,但当我尝试将其应用于第二个数据集时,它返回:

KeyError:'标签[891]不在[index]中

但是,当我查看#891值时,它实际上返回一个带有值的行。

我想知道是否有人可以帮我解决这个问题,我将非常感激。

非常感谢!

答案

我认为你应该理解(在python 3.x中)的结果

df.loc[i,'dir_1'] == ('E' or 'NE' or 'SE')

除非df.loc [i,'dir_1']实际上等于'E',否则总是会是False

因此,if语句应该改为类似的

 if df.loc[i,'dir_1'] in ['E', 'NE', 'SE']:

同样,您可以在最后一个比较语句中使用in

最终的功能是:

def dir_func(df):
for i in df.index:
    if df.loc[i,'dir_1'] in ['E', 'NE', 'SE']:
        df.loc[i,'dir_fin'] = 'E'
    elif df.loc[i,'dir_1'] in ['W', 'NW', 'SW']:
        df.loc[i,'dir_fin'] = 'W'
    else:
        if df.loc[i,'dir_2'] in ['E', 'NE', 'SE']:
            df.loc[i,'dir_fin'] = 'E' 
        elif df.loc[i,'dir_2'] in ['W', 'NW', 'SW']:
            df.loc[i,'dir_fin'] = 'W'
        else:
            if (df.loc[i,'loc_01'].lower() in ("sebs", "seasts", "seastbound", "ses")) or (speed_overspeed.loc[i,'loc_02'] in ("sebs", "seasts", "seastbound", "ses")):
                df.loc[i,'dir_fin'] = 'E' 
            elif (df.loc[i,'loc_01'].lower() in ("swbs", "swests", "swestbound", "sws")) or (speed_overspeed.loc[i,'loc_02'] in ("swbs", "swests", "swestbound", "sws")):
                df.loc[i,'dir_fin'] = 'W' 
            else:
                df.loc[i,'dir_fin'] = 'NA'

以上是关于python - 标签不在[index]中的主要内容,如果未能解决你的问题,请参考以下文章

如何测量python中代码行之间的时间?

如何考虑 Python 中代码可重用性和可扩展性的 OOP 设计选择?

《深度学习入门 基于Python的理论与实现》书中代码笔记

java中代码发生异常后 程序会怎么执行?

PHP传值问题! 例:A、B为两个页面,我在A中获取一个ID值,传送给B,那么AB中代码怎么写!

统计代码中代码行空行注释行的个数