我想要一種將浮點范圍映射到字串并保存回資料幀的簡單方法。我知道您不能將 range() 與浮點數一起使用。
設定 df
import pandas as pd
d = [1.1, 5.6, 7.9, 6.2]
df = pd.DataFrame(data=d)
如果需要,映射字典或者這可能是一個 if else 塊,我更喜歡 dict 因為它設定得更快但很高興使用 if else 應該有一個簡單的解決方案。
grade_dict = {
(0, 4.9) :'average 4th-grade student or lower',
(5.0, 5.9) :'average 5th or 6th-grade student',
(6.0, 6.9) :'average 7th or 8th-grade student',
(7.0, 7.9) :'average 9th or 10th-grade student',
(8.0, 8.9) :'average 11th or 12th-grade student',
(9.0, 9.9) :'average 13th to 15th-grade (college) student'}
然后我想做這樣的事情
df['dale_chall_readability_score'] = df['dale_chall_readability_score'].map(grade_dict)
我在想我遺漏了一些東西,因為我發現為此找到一個可行的解決方案很棘手。
uj5u.com熱心網友回復:
嘗試使用 apply 其中 key[0] 是元組范圍的索引 1 并且 key[1] 是元組范圍的索引 2
import pandas as pd
d = [1.1, 5.6, 7.9, 6.2]
df = pd.DataFrame(data=d)
grade_dict = {
(0, 4.9) :'average 4th-grade student or lower',
(5.0, 5.9) :'average 5th or 6th-grade student',
(6.0, 6.9) :'average 7th or 8th-grade student',
(7.0, 7.9) :'average 9th or 10th-grade student',
(8.0, 8.9) :'average 11th or 12th-grade student',
(9.0, 9.9) :'average 13th to 15th-grade (college) student'}
def grade_range(x):
for key in grade_dict:
if x >= key[0] and x <= key[1]:
return grade_dict[key]
df['grade_range'] = df[0].apply(grade_range)
print(df)
輸出:
0 grade_range
0 1.1 average 4th-grade student or lower
1 5.6 average 5th or 6th-grade student
2 7.9 average 9th or 10th-grade student
3 6.2 average 7th or 8th-grade student
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386392.html
上一篇:使用串列中的專案更新字典
下一篇:字典將另一個字典附加到特定鍵
