首页 > 解决方案 > 替换数据框中的值不在循环中工作

问题描述

我正在运行以下代码以用字符串替换数字(来自调查的标签)。代码末尾的命令行正在运行,但是当我尝试创建循环时,值不再被替换。

import pandas as pd

# Create a test data frame
df =pd.DataFrame([{'Q1_2':1,'Q1_3':4},{'Q1_2':1,'Q1_3':4},{'Q1_2':1,'Q1_3':4},{'Q1_2':1,'Q1_3':4}])

dfCategorical = {'Q1_2':'studylevel',
                'Q1_3':'studyfield'}

studylevel = {1:'Undergraduate (Bachelor level)',
              2:'Graduate (Master level)',
              3:'PhD',
              4:'Other (e.g., MBA)'}

studyfield = {1:'Arts / Humanities (e.g., cultural studies, history, linguistics, philosophy, religion)',
        2:'Business / Management',
        3:'Computer sciences / IT',
        4:'Economics',
        5:'Engineering (incl. architecture)',
        6:'uman medicine / health sciences',
        7:'Law',
        8:'Mathematics',
        9:'Natural sciences',
        10:'Science of art (e.g., art, design, dramatics, music)',
        11:'Social sciences (e.g., psychology, politics, education)',
        12:'Other'}

for key, value in dfCategorical.items():
    print(key,value)
    df.loc[:,key] = df.loc[:,key].replace(value)

但是 df 中的值不会被替换。感谢您帮助我解决此问题。

标签: pandasdataframe

解决方案


您是否尝试这样做(或类似的)...

从:

   Q1_2  Q1_3
0     1     4
1     1     4
2     1     4
3     1     4

至:

df.replace({'Q1_2': studylevel}).replace({'Q1_3': studyfield})

                             Q1_2       Q1_3
0  Undergraduate (Bachelor level)  Economics
1  Undergraduate (Bachelor level)  Economics
2  Undergraduate (Bachelor level)  Economics
3  Undergraduate (Bachelor level)  Economics

或者...

print(df.replace({'Q1_2': studyfield}).replace({'Q1_3': studyfield}))

                                                Q1_2       Q1_3
0  Arts / Humanities (e.g., cultural studies, his...  Economics
1  Arts / Humanities (e.g., cultural studies, his...  Economics
2  Arts / Humanities (e.g., cultural studies, his...  Economics
3  Arts / Humanities (e.g., cultural studies, his...  Economics

如果是这样,并保持更改添加df = 到命令的左侧,以将它们分配回原始数据帧。


推荐阅读