【问题标题】:Converto pandas object in integer using python使用python将pandas对象转换为整数
【发布时间】:2017-07-29 06:52:57
【问题描述】:

我在将 pandas 对象转换为整数时遇到了一点问题。具体来说,我使用了关于 P2P 借贷的借贷俱乐部的可用数据集之一,有一个名为“期限”的列与贷款期限相关,不是整数而是对象(例如“36 个月”),该列是对象类型,但我需要转换为整数:我不想要“36 个月”而是“36”并将其计算为 int。我已经尝试过 datetime 和 time 库,但是没有一个可以找到解决方案。 数据可在此处在线获取:https://www.lendingclub.com/info/download-data.action --> LOAN DATA --> 2012 -2013。

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv("C://////LoanStats3b.csv", skiprows= 1, low_memory = False)

然后我发现了这个功能:

import datetime
import time
import logging
logging.basicConfig(level = logging.DEBUG)
log = logging.getLogger('parsedatetime')

def makeEpochTime(date_time):
    """
    provides the seconds since epoch give a python datetime object.

    @param date_time: Python datetime object

    @return:
        seconds_since_epoch:: int 
    """
    date_time = date_time.isoformat().split('.')[0].replace('T',' ')
    #'2009-07-04 18:30:47'
    pattern = '%Y-%m-%d %H:%M:%S'
    seconds_since_epoch = int(time.mktime(time.strptime(date_time, pattern)))
    return seconds_since_epoch 

但这并不能解决我的问题。
我该怎么办?
我在 Jupyter Notebook 中使用 3.6.0 python 版本
谢谢你

【问题讨论】:

    标签: python pandas datetime matplotlib jupyter-notebook


    【解决方案1】:

    您可以尝试使用正则表达式仅提取数字:

    data['term'].astype(str).str.extract(r'([0-9]+)').fillna(0).astype(int)
    

    当我这样做时,我得到:

    >>> df['term'].astype(str).str.extract(r'([0-9]+)').fillna(0).astype(int).head()
    0    36
    1    36
    2    36
    3    36
    4    36
    Name: term, dtype: int32
    

    我不知道你是如何得到全 0 的。

    【讨论】:

    • df.term = pd.Series().replace('','T').astype(int) 转换为 NaN 我以这种方式和您的方式尝试过,但它没有转换正确,因为代码返回我 NaN,但我希望 '36 Months' 变为 36
    • 你需要一个.fillna(0)。请查看更新的答案。
    • AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas 这个错误出现
    • 是的,我刚刚试过你的代码 df['term'].str.extract(r'([0-9]+)').fillna(0).astype(int) 和上面发布的错误出现 AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas 这个错误
    • 您必须先转换为字符串。我猜编辑没有工作。它现在在那里。这是data['term'].astype(str).str.extract(r'([0-9]+)').fillna(0).astype(int)
    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 2018-10-27
    • 2021-08-11
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多