[英]Pandas/Python: Replace multiple values in multiple columns
全部,我有一個190列和902行的分析csv文件。 我需要重新編碼幾列中的值(准確地說是18),從當前的1-5 Likert縮放到0-4 Likert縮放。
我嘗試過使用替換:
df.replace({'Job_Performance1': {1:0, 2:1, 3:2, 4:3, 5:4}}, inplace=True)
但是這會引發一個值錯誤: “重疊鍵和值不允許替換”
我可以使用地圖:
df['job_perf1'] = df.Job_Performance1.map({1:0, 2:1, 3:2, 4:3, 5:4})
但是,我知道必須有一種更有效的方法來實現這一點,因為這個用例是統計分析和統計軟件的標准,例如SPSS
我已經回顧了StackOverFlow上的多個問題,但它們都不適合我的用例。 例如Pandas - 替換列值 , pandas將一個列替換為多個值 , Python pandas:替換多個列匹配另一個數據幀中的多個列的值
建議?
您可以簡單地從列中減去標量值,這實際上就是您在此處執行的操作:
df['job_perf1'] = df['job_perf1'] - 1
另外,當您需要在18列上執行此操作時,我將構建18個列名稱的列表,並立即從所有列中減去1
:
df[col_list] = df[col_list] - 1
無需映射。 這可以作為向量加法來完成,因為有效地,你正在做的是從每個值中減去1
。 這很優雅:
df['job_perf1'] = df['Job_Performance1'] - numpy.ones(len(df['Job_Performance1']))
或者,沒有numpy
:
df['job_perf1'] = df['Job_Performance1'] - [1] * len(df['Job_Performance1'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.