【发布时间】:2014-10-13 15:41:22
【问题描述】:
我有一个看起来像下面的垃圾列的数据框:
d = {'Junk Column' : ['1', '2', '3', '4', '5', '6', '7', 'J', 'K'],
'Good Column' : [1, 2, 3, 4, 5, 6, 7, 'J', 'K']}
df = pd.DataFrame(d)
Good Column Junk Column
0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
5 6 6
6 7 7
7 J J
8 K K
我的目标是进入Good Column。不同的是 '1' 已经被转换为 1。
df['Junk Column'] = df['Junk Column'].astype(int)
失败,因为 'J' 和 'K' 不能转换为整数..
我已经成功地将垃圾列转换为好列,使用:
def clean_out_strings(value):
try:
return int(value)
except ValueError:
return value
df['Junk Column'] = df['Junk Column'].apply(clean_out_strings)
但是,由于我的数据框超过 100 万行,并且每天都在增长,所以这非常慢。我想看看是否有人有更快的方法来做到这一点。
【问题讨论】: