我有一个名为df
的Pandas数据框,其中_type
列包含First
或Second
。我想将所有First
值转换为1,将所有Second
值转换为2.
我应该怎么做?
谢谢!
答案 0 :(得分:3)
您可以将Series.map
与字典一起使用:
df['_type'] = df['_type'].map({'First': 1, 'Second': 2})
实施例:
df = pd.DataFrame({
'_type': ['First', 'Second', 'First', 'Second']
})
df
# _type
#0 First
#1 Second
#2 First
#3 Second
df['_type'] = df['_type'].map({'First': 1, 'Second': 2})
df
# _type
#0 1
#1 2
#2 1
#3 2
答案 1 :(得分:2)
df.replace
有效:
In [10]: df._type.replace(('First', 'Second'), (1, 2), inplace=True); df
Out[10]:
_type
0 1
1 2
2 1
3 2
df.eq
(非现场)的另一种可能性:
In [15]: df._type.eq('Second').mul(1) + 1
Out[15]:
0 1
1 2
2 1
3 2
Name: _type, dtype: int64
您还可以使用np.where
:
In [28]: pd.Series(np.where(df._type == 'First', 1, 2)).to_frame('_type')
Out[28]:
_type
0 1
1 2
2 1
3 2
答案 2 :(得分:1)
我的解决方案来自于我使用factor
在R中实现它。
在python中pandas
应为category
df = pd.DataFrame({'_type': ['First', 'Second', 'First', 'Second']})
df['_type'].astype('category').cat.codes.add(1)
Out[706]:
0 1
1 2
2 1
3 2
dtype: int8