前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中的dataframe 剔除部分数据后,索引消失,重新建立索引

python中的dataframe 剔除部分数据后,索引消失,重新建立索引

作者头像
学到老
发布2019-01-25 11:24:38
2.8K0
发布2019-01-25 11:24:38
举报

今天在处理一个数据的过程中出现问题,python中的dataframe 剔除部分数据后,索引消失,遍历就出错,

报错形式如下

代码语言:javascript
复制
Traceback (most recent call last):
  File "D:/pycreate/tianchi_糖尿病/data_pre/split_data.py", line 53, in <module>
    handler_data()
  File "D:/pycreate/tianchi_糖尿病/data_pre/split_data.py", line 32, in handler_data
    print(indexdf["S"][i])
  File "D:\ANACONDA\ana3.5.2\lib\site-packages\pandas\core\series.py", line 766, in __getitem__
    result = self.index.get_value(self, key)
  File "D:\ANACONDA\ana3.5.2\lib\site-packages\pandas\core\indexes\base.py", line 3103, in get_value
    tz=getattr(series.dtype, 'tz', None))
  File "pandas\_libs\index.pyx", line 106, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 114, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 964, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 31

后来找了以下是由于我对原始数据删除了部分异常数据导致的,。

代码语言:javascript
复制
#会导致原索引丢失,30-32
    indexdf=indexdf[indexdf["EE"]!=0]

解决方案

代码语言:javascript
复制
   #重新定义索引,才能支持遍历
    # indexdf = indexdf.reset_index(drop=True)

代码:

代码语言:javascript
复制
  indexdf=pd.read_table("0.ann",sep="\s+",names=["T","TC","S","E","name"])
  indexdf["EE"] = indexdf["E"].apply(lambda x: x if ";" not in x else 0)
  indexdf=indexdf[indexdf["EE"]!=0]
        #重新定义索引,才能支持遍历
 indexdf = indexdf.reset_index(drop=True)
 for i in range(len(indexdf)):
    
            print(indexdf["S"][i])

pandas 使用apply 处理多列数据

直接上代码

代码语言:javascript
复制
import pandas as pd
def my_min(a, b):
    return min(abs(a),abs(b)


s = pd.Series([10.0247,10.0470, 10.0647,10.0761,15.0800,10.0761,10.0647,10.0470,10.0247,10.0,9.9753,9.9530,9.9353,9.9239,18.92,9.9239,9.9353,9.9530,9.9753,10.0])
df = pd.DataFrame(s)
df.columns=['value']
df['val_1'] = df['value'].diff()
df['val_2'] = df['val_1'].shift(-1)
df['val'] = df.apply(lambda row: my_min(row['val_1'], row['val_2']), axis=1)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pandas 使用apply 处理多列数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档