我通过拆分字符来清理csv文件中的数据,这样我得到两个数字,即(750,755)而不是(750-755)。我成功了。现在我试图获取最小值,即(750)并创建一个名为FICO.Score的新列来存储这些最小值。这是我无法弄清楚的部分,因为当我尝试打印新列时出现语法错误。
import pandas as pd
loansData = pd.read_csv('https://spark-public.s3.amazonaws.com/dataanalysis/loansData.csv')
fc = loansData['FICO.Range']
fico = list(map((lambda x: x.split('-')), fc))
loansData['FICO.Score'] = list(map((lambda x: min(x), fico))
print loansData['FICO.Score']
答案 0 :(得分:3)
假设最小值始终是'min_val-max_val
'中的第一个值。然后你可以使用向量化的str
方法来分割字符串并获取第一个值并转换为int64
:
In [14]:
loansData['FICO.Score'] = loansData['FICO.Range'].str.split('-').str[0].astype(np.int64)
loansData['FICO.Score']
Out[14]:
81174 735
...
55610 680
38576 675
3116 670
Name: FICO.Score, Length: 2500, dtype: int64
您遇到错误的原因是您有一个额外的前导括号:
In [19]:
loansData['FICO.Score1'] = list(map(lambda x: min(x), fico))
loansData['FICO.Score1']
Out[19]:
15867 715
94971 670
36911 665
41200 670
83869 735
53853 725
...
49957 685
23735 705
65882 740
55610 680
38576 675
3116 670
Name: FICO.Score1, Length: 2500, dtype: object
但请注意,这仍然会给你留下object
的dtype str
,这不是你想要的