如何将某些分类值从 DataFrame 转换为 python 中的数值(int)?
How to convert certain categorical values from a DataFrame to numerical(int) in python?
我有一个包含多列和分类数据的数据框,我想在其中分配一个数字 (int) 值,以便继续我需要做的数据清理工作。
例如我希望 OldValue 和 NewValue 列中包含“1st Call”的单元格的值为 2,“2nd Call”的值为 3,依此类推...
我 post 我的数据框 Screenshot 这样你就明白我的意思了。
我是编程语言的新手,因此如果您能举一个实际的例子来回答您的问题,那将会有很大的帮助。
您可以使用 replace 并传递一个将每个类别映射到一个数值的字典,然后将新列添加到您的 DataFrame:
df['OldValueInt'] = df['OldValue'].replace( {'1st Call attempted': 2, '2nd Call attempted': 3})
示例:
df = pd.DataFrame([['a','x'],['b','x'],['a','y']], columns=['ab','xy'])
df['abInt'] = df['ab'].replace('a': 1, 'b': 2)
print df
产生
ab xy abInt
0 a x 1
1 b x 2
2 a y 1
或者如果你想替换多列:
df[['ab','xy']] = df.replace( {'ab': {'a': 1, 'b': 2},
'xy': {'x': 2, 'y': 3}} )
我有一个包含多列和分类数据的数据框,我想在其中分配一个数字 (int) 值,以便继续我需要做的数据清理工作。
例如我希望 OldValue 和 NewValue 列中包含“1st Call”的单元格的值为 2,“2nd Call”的值为 3,依此类推...
我 post 我的数据框 Screenshot 这样你就明白我的意思了。
我是编程语言的新手,因此如果您能举一个实际的例子来回答您的问题,那将会有很大的帮助。
您可以使用 replace 并传递一个将每个类别映射到一个数值的字典,然后将新列添加到您的 DataFrame:
df['OldValueInt'] = df['OldValue'].replace( {'1st Call attempted': 2, '2nd Call attempted': 3})
示例:
df = pd.DataFrame([['a','x'],['b','x'],['a','y']], columns=['ab','xy'])
df['abInt'] = df['ab'].replace('a': 1, 'b': 2)
print df
产生
ab xy abInt
0 a x 1
1 b x 2
2 a y 1
或者如果你想替换多列:
df[['ab','xy']] = df.replace( {'ab': {'a': 1, 'b': 2},
'xy': {'x': 2, 'y': 3}} )