从pandas数据框中的列中过滤除英文字符外的所有字符

时间:2018-08-02 06:33:13

标签: python pandas

我有一个熊猫数据框df

import pandas as pd
df = pd.DataFrame({"ID": [1,2,3,4,5],
           "eng_mand" :["後山 73reviews Community Center 竹杉園休閒農場",
                        "Taipei City 42台北市Taiwan",
                        "綠山谷海芋園餐廳reviews",
                        "名陽匍65休閒農莊minyangpu大賞園",
                        "Menghuanhu"]})

如下所示:

   ID                               eng_mand
0   1  後山 73reviews Community Center 竹杉園休閒農場
1   2                Taipei City 42台北市Taiwan
2   3                        綠山谷海芋園餐廳reviews
3   4                  名陽匍65休閒農莊minyangpu大賞園
4   5                             Menghuanhu

我想将eng_mand列中除英语之外的所有字符都放入另一个new_col列中。

输出应如下所示:

   ID                               eng_mand                   new_col
0   1  後山 73reviews Community Center 竹杉園休閒農場           後山 73 竹杉園休閒農場
1   2                Taipei City 42台北市Taiwan                42台北市
2   3                        綠山谷海芋園餐廳reviews            綠山谷海芋園餐廳
3   4                  名陽匍65休閒農莊minyangpu大賞園          名陽匍65休閒農莊大賞園
4   5                             Menghuanhu

如何在熊猫中做到这一点?

2 个答案:

答案 0 :(得分:0)

使用str.replace

df['new'] = df['eng_mand'].str.replace('[a-zA-Z]', '')
print (df)
  ID                               eng_mand              new
0   1  後山 73reviews Community Center 竹杉園休閒農場  後山 73   竹杉園休閒農場
1   2                Taipei City 42台北市Taiwan            42台北市
2   3                        綠山谷海芋園餐廳reviews         綠山谷海芋園餐廳
3   4                  名陽匍65休閒農莊minyangpu大賞園     名陽匍65休閒農莊大賞園
4   5                             Menghuanhu                 

答案 1 :(得分:0)

使用str.replace,但还包括所有特殊字符,例如重音符号,例如"éòàç"等:

regex = "[^\d\W⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〺〻㐀-䶵一-鿃豈-鶴侮-頻並-龎]"
df["new"] = df["eng_mand"].str.replace(regex, "")

结果是:

0    後山 73   竹杉園休閒農場
1              42台北市
2           綠山谷海芋園餐廳
3       名陽匍65休閒農莊大賞園
4