所以我的str列表是:
col = ['cat1','cat2','cat3']
我想转换成int列表,如:
col = [0,1,2]
我试过了:
col=pd.Series(col)
col=pd.to_numeric(col)
但它给出了错误:
无法解析字符串" cat1"在第0位
答案 0 :(得分:5)
In [4719]: pd.Series(col).astype('category').cat.codes
Out[4719]:
0 0
1 1
2 2
dtype: int8
或者,
In [4726]: pd.Series(pd.factorize(col)[0])
Out[4726]:
0 0
1 1
2 2
dtype: int64
或者,
In [4738]: np.unique(col, return_inverse=True)[1]
Out[4738]: array([0, 1, 2], dtype=int64)
或者,
In [4739]: pd.Categorical(col).codes
Out[4739]: array([0, 1, 2], dtype=int8)
如果您需要列表,请最后使用.tolist()
。
答案 1 :(得分:2)
使用factorize
:
a = list(range(len(col)))
[0, 1, 2]
如果不是重复值:
col
如果将col = ['cat4','cat2','cat3', 'cat2']
print (pd.factorize(col)[0].tolist())
[0, 1, 2, 1]
更改为:
col = ['cat4','cat2','cat3', 'cat2']
a = list(range(len(col)))
print (a)
[0, 1, 2, 3]
使用第二种解决方案获得不同的输出:
private void ReplyToMail(Outlook.MailItem mailItem)
{
//mailItem is the mail you wand to reply to
Outlook.MailItem replyMail = mailItem.Reply();
//you can use replyAll insted
replyMail.Body = "the mail body text";
((Outlook._MailItem)replyMail).Send();
}
答案 2 :(得分:1)
您也可以使用col = ['cat1','cat2','cat3', 'cat2']
col=pd.Series(col)
col.groupby(col).ngroup()
即
col.groupby(col).ngroup().tolist()
[0, 1, 2, 1]
0 0 1 1 2 2 3 1 dtype: int64
如果您需要清单,那么
pthread_t