簡體   English   中英

熊貓用字典替換值

[英]Pandas Replace Values with Dictionary

我有一個具有以下結構的數據框:

        Ranges  Relative_17-Aug  Relative_17-Sep  Relative_17-Oct
0   (0.0, 0.1]  1372             1583             1214
1   (0.1, 0.2]  440              337              648
2   (0.2, 0.3]  111              51               105
3   (0.3, 0.4]  33               10               19
4   (0.4, 0.5]  16               4                9
5   (0.5, 0.6]  7                7                1
6   (0.6, 0.7]  4                3                0
7   (0.7, 0.8]  5                1                0
8   (0.8, 0.9]  2                3                0
9   (0.9, 1.0]  2                0                1
10  (1.0, 2.0]  6                0                2

我正在嘗試使用下面的代碼用字典替換列范圍,但是它不起作用,如果我做錯了任何提示:

mydict= {"(0.0, 0.1]":"<=10%","(0.1, 0.2]":">10% and <20%","(0.2, 0.3]":">20% and <30%", "(0.3, 0.4]":">30% and <40%", "(0.4, 0.5]":">40% and <50%", "(0.5, 0.6]":">50% and <60%", "(0.6, 0.7]":">60% and <70%", "(0.7, 0.8]":">70% and <80%", "(0.8, 0.9]":">80% and <90%", "(0.9, 1.0]":">90% and <100%", "(1.0, 2.0]":">100%"}
t_df["Ranges"].replace(mydict,inplace=True)

謝謝!

我認為這是在cut中創建Ranges列時最好使用參數labels

labels = ['<=10%','>10% and <20%', ...]
#change by your bins
bins = [0,0.1,0.2...]
t_df['Ranges'] = pd.cut(t_df['col'], bins=bins, labels=labels)

如果不可能的話,強制轉換為字符串應該有助於在注釋中建議@Dark,以便使用map獲得更好的性能:

t_df["Ranges"] = t_df["Ranges"].astype(str).map(mydict)

通過使用map功能,可以很容易地以一種簡單的方式實現,如下所示。

mydict= {"(0.0, 0.1]":"<=10%","(0.1, 0.2]":">10% and <20%","(0.2, 0.3]":">20% and <30%", "(0.3, 0.4]":">30% and <40%", "(0.4, 0.5]":">40% and <50%", "(0.5, 0.6]":">50% and <60%", "(0.6, 0.7]":">60% and <70%", "(0.7, 0.8]":">70% and <80%", "(0.8, 0.9]":">80% and <90%", "(0.9, 1.0]":">90% and <100%", "(1.0, 2.0]":">100%"}

t_df["Ranges"] = t_df["Ranges"].map(lambda x : mydict[str(x)])

希望這可以幫助..!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM