使用 Panda 库将非数字转换为数值

far*_*777 3 python pandas

我正在学习 Pandas,我遇到了一个有趣的问题。所以我有一个像这样的数据框:

COL1    COL2      COL3
a     9/8/2016     2
b     12/4/2016    23
         ...
n     1/1/2015     21
Run Code Online (Sandbox Code Playgroud)

COL1 是字符串,Col2 是时间戳,Col3 是数字。现在我需要对此数据框进行一些分析,我想将所有非数字数据转换为数字。我尝试使用DictVectorizer()将 COL1 和 2 转换为数字,但首先我不确定这是否是执行此类操作的最佳方法,其次我不知道如何处理时间戳。当我使用 DictVectorizer 时,输出将如下所示:

{u'COL3: {0:2, 1:23 , ...,n:21}, 'COL1': {0: u'a', 1:'b', ... , n:'n'}, 'COL2': {0: u'9/8/2016' , 1: u'12/4/2016' , ... , n:u'1/1/2016'}}
Run Code Online (Sandbox Code Playgroud)

但根据我了解到的情况应该是这样的,或者至少我知道我需要这样的东西:

 {COL1:'a', COL2: '9/8/2016' , COL3: 2  and so on}   
Run Code Online (Sandbox Code Playgroud)

所以,问题: 1-将非数字(包括日期)转换为数字值以在 sklearn 库中使用的最佳方法是什么 2-使用 DictVectorize() 的正确方法是什么

任何帮助,将不胜感激。

Tip*_*ine 6

要将非数字数据编码为数字,您可以使用 scikit-learn 的LabelEncoder。它将每个类别(例如 COL1 的ab、 )编码c为整数。

假设 df 是您的数据框,请尝试:

from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
enc.fit(df['COL1'])
df['COL1'] = enc.transform(df['col1'])
Run Code Online (Sandbox Code Playgroud)
  • enc.fit()创建相应的整数值。
  • enc.transform()将编码应用于 df 值。

对于第二列,使用 Pandas to_datetime()函数应该可以解决问题,就像 @quinn-weber 提到的那样,尝试:

df['COL2'] = pd.to_datetime(df['COL2'])
Run Code Online (Sandbox Code Playgroud)