[英]Pandas find the maximum num from substring column
我有一個 dataframe 看起來像這樣
0 1 2 3
0 {'Emotion': 'female_angry', 'Score': '90.0%'} {'Emotion': 'female_disgust', 'Score': '0.0%'} {'Emotion': 'female_fear', 'Score': '0.0%'}
1 {'Emotion': 'female_angry', 'Score': '0.0%'} {'Emotion': 'female_disgust', 'Score': '0.0%'} {'Emotion': 'female_fear', 'Score': '80.0%'}
2 {'Emotion': 'female_angry', 'Score': '0.1%'} {'Emotion': 'female_disgust', 'Score': '99.0%'} {'Emotion': 'female_fear', 'Score': '4.6%'}
我想根據最高分值制作一個單獨的列。
像這樣
Emotion
0 'female_angry'
1 'female_fear'
2 'female_disgust'
我經歷了很多參考,但我無法解決我的問題。 有什么建議么?
您可以使用pandas.apply和axis=1
來遍歷每一行:
df_new = df.apply(lambda row: max([tuple(dct.values()) for dct in row],
key= lambda x: x[1]
)[0], axis=1).to_frame(name = 'Emotion')
print(df_new)
Output:
Emotion
0 female_angry
1 female_fear
2 female_disgust
解釋:
>>> df.apply(lambda row: [tuple(dct.values()) for dct in row], axis=1)
# [('female_angry', '90.0%'), ('female_disgust', '0.0%'), ('female_fear', '0.0%')]
# [('female_angry', '0.0%'), ('female_disgust', '0.0%'), ('female_fear', '80.0%')]
# [('female_angry', '0.1%'), ('female_disgust', '99.0%'), ('female_fear', '4.6%')]
>>> max([('female_angry', '90.0%'), ('female_disgust', '0.0%'), ('female_fear', '0.0%')],
key=lambda x : x[1])
# ('female_angry', '90.0%')
>>> ('female_angry', '90.0%')[0]
# 'female_angry'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.