【问题标题】:How to slice lists in Python如何在 Python 中对列表进行切片
【发布时间】:2015-01-29 02:54:16
【问题描述】:
我正在尝试为 python 中的日志回归清理一些数据,而我的列表一直显示为
loansData['FICO.Score'][0:5]
Out[23]:
81174 735-739
99592 715-719
80059 690-694
15825 695-699
33182 695-699
我希望能够选择较低的 fico 范围数字如何删除第一组数字并同时删除较高的范围?
【问题讨论】:
标签:
python
pandas
split
data-cleaning
【解决方案1】:
看起来您的 Q 主题与您实际询问的内容并不密切 - 您对那个列表的切片做得很好,现在您所拥有的是 strings (所述列表中的每个项目)。
无论如何,假设例如第一个是81174 735-739(中间正好四个空格,之前没有,没有制表符,&c),735 是 [9: 12]。比如
[s[9:12] for s in loansData['FICO.Score'][0:5]]
应该显示你想要的(如果上面关于提取字符串格式的假设不正确,很容易需要调整 1 左右,但是,这是一般的想法)。
【解决方案2】:
这是一个示例,它将您的数据子集化为仅包含带有“695-699”、“690-694”分数的 FICO 观察结果。
loansData['FICO.Score'][loansData['FICO.Score'].isin(['695-699', ' 690-694'])]
【解决方案3】:
此答案假设 5 位数字是系列索引,并且您希望返回一个包含每个值下限的数组。
import pandas as pd
数据:
i=[81174,99592,80059,15825,33182]
d = ['735-739','715-719','690-694','695-699','695-699']
重新创建框架:
df =pd.DataFrame(d, index=i, columns=['FICO.Score'])
对字符串进行切片并转换为int:
df['FICO.Score'].apply(lambda x: int(x[:-4])).values
从系列中调用值返回和数组(摆脱索引)