如何从 pandas 的列中过滤出首次出现的普通话字符并将其放入另一列
How to filter first occurrence of Mandarin characters from a column in pandas and put that in another column
我有一个数据框 df
:
import pandas as pd
df = pd.DataFrame({"ID": [1,2,3,4,5],
"eng_mand" :["後山 4.7·3 reviews Community Center 竹杉園休閒農場",
"Taipei City 台北市Taiwan",
"綠山谷海芋園餐廳 3.8·52 reviews",
"名陽匍休閒農莊minyangpu大賞園",
"Menghuanhu"]})
看起来像:
ID eng_mand
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場
1 2 Taipei City 台北市Taiwan
2 3 綠山谷海芋園餐廳 3.8·52 reviews
3 4 名陽匍休閒農莊minyangpu大賞園
4 5 Menghuanhu
我想从列 eng_mand
中过滤掉第一次出现的普通话字符,并将其放在另一列 mandarin_char
中。我的最终输出必须如下所示:
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu
如何在 python - pandas
中执行此操作
使用str.findall
and pass the regex for the :
In[14]:
df['mandarin_char'] = df['eng_mand'].str.findall('[\u4e00-\u9fff]+').str[0]
df
Out[14]:
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu NaN
如果需要,您可以对结果调用 fillna('')
来替换 NaN
。
使用 str.extract
all chinese chars 并在必要时添加 fillna
以将 NaN
替换为空字符串:
df['mandarin_char'] = df['eng_mand'].str.extract(r'([\u4e00-\u9fff]+)').fillna('')
print (df)
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu
我有一个数据框 df
:
import pandas as pd
df = pd.DataFrame({"ID": [1,2,3,4,5],
"eng_mand" :["後山 4.7·3 reviews Community Center 竹杉園休閒農場",
"Taipei City 台北市Taiwan",
"綠山谷海芋園餐廳 3.8·52 reviews",
"名陽匍休閒農莊minyangpu大賞園",
"Menghuanhu"]})
看起来像:
ID eng_mand
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場
1 2 Taipei City 台北市Taiwan
2 3 綠山谷海芋園餐廳 3.8·52 reviews
3 4 名陽匍休閒農莊minyangpu大賞園
4 5 Menghuanhu
我想从列 eng_mand
中过滤掉第一次出现的普通话字符,并将其放在另一列 mandarin_char
中。我的最终输出必须如下所示:
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu
如何在 python - pandas
中执行此操作使用str.findall
and pass the regex for the
In[14]:
df['mandarin_char'] = df['eng_mand'].str.findall('[\u4e00-\u9fff]+').str[0]
df
Out[14]:
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu NaN
如果需要,您可以对结果调用 fillna('')
来替换 NaN
。
使用 str.extract
all chinese chars 并在必要时添加 fillna
以将 NaN
替换为空字符串:
df['mandarin_char'] = df['eng_mand'].str.extract(r'([\u4e00-\u9fff]+)').fillna('')
print (df)
ID eng_mand mandarin_char
0 1 後山 4.7·3 reviews Community Center 竹杉園休閒農場 後山
1 2 Taipei City 台北市Taiwan 台北市
2 3 綠山谷海芋園餐廳 3.8·52 reviews 綠山谷海芋園餐廳
3 4 名陽匍休閒農莊minyangpu大賞園 名陽匍休閒農莊
4 5 Menghuanhu