python - Pandas 数据帧 : Replace based on filter and regex extract

标签 python regex pandas dataframe cjk

这是我的数据框的一部分:

   Type      Date        Diff   Data
0  Section   20171204    1.0    ~
1  Korean    20171204    1.0    저는 유양이에요.
2  English   20171204    1.0    Im Yooyang.
3  Theme     20171204    1.0    {"zh":"介绍","vi":"giới thiệu","ko":"소개","en":"I...

有超过 10,000 行,其中约 500 行是“主题”类型。

我正在尝试仅用韩语替换主题数据,即 {"zh":"介绍","vi":"giới thiệu","ko":"소개","en":"我... 变成了 소개

我可以使用正则表达式 ([가-힣]+) 提取仅限韩语的文本。

我试着用新的主题数据制作一个新的 df,使用 df[df['Type'] == 'Theme'][['Data']].T.squeeze().str.extract('([가-힣]+)') , 但我不知道如何将它合并回原来的 df (df[df['Type'] == 'Theme'][['Data']] = 不工作。

我试过替换,但我似乎无法仅针对主题数据进行替换。

显然我不应该使用迭代器:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html

最佳答案

您可以将 map 方法与匿名辅助函数一起使用,使用 json.loads 将字符串转换为字典并通过 loc 进行索引>:

import json

df.loc[df.Type == 'Theme', 'Data'] = df.loc[df.Type == 'Theme', 'Data'].map(lambda x: json.loads(x)["ko"])

关于python - Pandas 数据帧 : Replace based on filter and regex extract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216899/

相关文章:

Python SpaCy Regex 不提取包含单词的标记

Python正则表达式从字符串中获取URL

python - DateTime索引不唯一且对应值相同时重采样

python - matplotlib 中的复杂极坐标图

python - 如何返回字符串的一部分

javascript - 1980 年前和 1980 年后的 RegEx Vin 验证

python - Pandas DataFrame 重新索引到最近的

python - 在 pandas 中使用滚动窗口计算非零数的有效方法?

python - 如何删除列表中的整个字典?

python - Jinja2 '-' 变量,bug?