这是我的数据框的一部分:
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/