Pandas - 使用模式/正则表达式编辑索引

Posted

技术标签:

【中文标题】Pandas - 使用模式/正则表达式编辑索引【英文标题】:Pandas - Edit Index using pattern / regex 【发布时间】:2014-09-05 01:03:24 【问题描述】:

给定一个像这样的数据框:

>>> df
      ix  val1  val2  val3  val4
    1.31     2     3     4     5
    8.22     2     3     4     5
    5.39     2     3     4     5
    7.34     2     3     4     5

是否可以使用replace 之类的东西来编辑索引?

伪代码:(因为df索引没有str属性)

df.index=df.index.str.replace("\\.[0-9]*","")

我需要类似的东西:

>>> df
   ix  val1  val2  val3  val4
    1     2     3     4     5
    8     2     3     4     5
    5     2     3     4     5
    7     2     3     4     5

问题是我的数据框很大。

提前致谢

【问题讨论】:

【参考方案1】:

你可以这样做:

df.index = df.index.to_series().astype(str).str.replace(r'\.[0-9]*','').astype(int)

你也可以使用.extract:

df.index.to_series().astype(str).str.extract(r'(\d+)').astype(int)

或者,您也可以只使用map 指向int 的索引:

pd.Index(map(int, df.index))

【讨论】:

谢谢 behzad.nouri。那完成了工作!

以上是关于Pandas - 使用模式/正则表达式编辑索引的主要内容,如果未能解决你的问题,请参考以下文章

pandas:使用正则表达式验证数据框单元格

Java基础-正则表达式

使用正则表达式获取字符串中模式的索引

正则表达式在多个模式之前找到一个数字序列,放入一个新列(Python,Pandas)

pandas使用replace函数和正则表达式移除dataframe字符串数据列中尾部指定模式字符串(Removing trailing substring in dataframe)

Pandas 正则表达式返回括号中的值