如何使用 map 函数拆分字符、获取最小值并存储在新创建的 pandas 列中
how to use map function to split character, get min values, and store in a newly created pandas column
我通过拆分一个字符来清理 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']
假设最小值始终是 '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
,这不是您想要的
我通过拆分一个字符来清理 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']
假设最小值始终是 '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
,这不是您想要的