簡體   English   中英

Pandas / Python:替換多列中的多個值

[英]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.

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