我在将pandas对象转换为整数时遇到了一些问题。具体来说,我使用了一个关于P2P贷款的贷款俱乐部的可用数据集,有一个名称为“期限”的栏目与飞蛾的贷款期限有关,而不是整数而是作为对象(例如'36个月'),这一列是一个对象类型但我需要转换为整数:我不想要'36个月'但是'36'并将其计算为int。我已经尝试了日期时间和时间库,但没有一个可以找到解决方案。 这些数据可在线获取:https://www.lendingclub.com/info/download-data.action - >贷款数据 - > 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笔记本中使用3.6.0 python版本
谢谢
答案 0 :(得分:0)
您可以尝试使用正则表达式来提取数字:
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
我不知道你是怎么得到全部的。