我有一个包含代码语言的数据框架。
数据帧头;
repo_id language
0 2519612 JavaScript
1 1519634 C
2 8534335 C++
3 6719676 LiveScript
4 1519234 C#
5 3234554 Python
6 3234554 Julia
7 3234554 Elm
8 3234554 Gosu我想把相似的语言组合成单一的语言。
例如,
"C、C++和C#“合并为"C”
LiveScript、JavaScript、..合并到"JavaScript“中
"Julia,Elm,Gosu“并入"Other”
"Python“保留为"Python”
期望输出为;
repo_id language
0 2519612 JavaScript
1 1519634 C
2 8534335 C
3 6719676 JavaScript
4 1519234 C
5 3234554 Python
6 3234554 Other
7 3234554 Other
8 3234554 Other解决方案不佳;
df.loc[df['language'] == 'C++', 'language'] = 'C'
df.loc[df['language'] == 'C#', 'language'] = 'C'我不想单独更改标签,如何才能更轻松?
发布于 2020-10-28 19:47:22
这可能会对您有所帮助:使用带有lambda函数的应用函数检查语言,然后按如下方式更新language列
df['language'] = df['language'].apply(lambda x: 'C' if x in ['C', 'C#', 'C++'] else 'JavaScript')期望的输出为:
repo_id language
0 2519670 JavaScript
1 2519670 C
2 2519670 C
3 2519670 JavaScript
4 2519670 C按如下所示修改函数
dic = {'repo_id':[2519670, 2519670,2519670, 2519670, 2519670, 2519670, 2519670,2519670, 2519670, 2519670],
'language':['JavaScript', "C++", "C", 'LiveScript', 'C#', 'Python', 'Julia', 'Elm', 'Gosu', 'Python'] }
df = pd.DataFrame(dic)
repo_id language
0 2519670 JavaScript
1 2519670 C++
2 2519670 C
3 2519670 LiveScript
4 2519670 C#
5 2519670 Python
6 2519670 Julia
7 2519670 Elm
8 2519670 Gosu然后应用以下函数:
df['language'] = df['language'].apply(lambda x: 'C' if x in ['C', 'C#', 'C++'] else ('JavaScript' if x in ['JavaScript', 'LiveScript'] else ('Python' if x in ['Python'] else 'Other')))
df期望输出
repo_id language
0 2519670 JavaScript
1 2519670 C
2 2519670 C
3 2519670 JavaScript
4 2519670 C
5 2519670 Python
6 2519670 Other
7 2519670 Other
8 2519670 Other
9 2519670 Pythonhttps://stackoverflow.com/questions/64571936
复制相似问题