问题描述
在一个DataFrame中,DataFrame中有一些列。 我想使用索引对列值进行“ /”拆分。 以下是我要拆分数据的列的列表。
Eg:- split_columns = ['Fuel', 'Air Pollution Score', 'City MPG', 'Hwy MPG', 'Cmb MPG', 'Greenhouse Gas Score']
如果燃料中包含数据,则输出应类似于“乙醇/气体”。
这是我的代码-
split_columns = ['Fuel', 'Air Pollution Score', 'City MPG', 'Hwy MPG', 'Cmb MPG', 'Greenhouse Gas Score']
for c in split_columns:
df1[c] = df1[c].apply(lambda x: x.split("/")[0])
df2[c] = df2[c].apply(lambda x: x.split("/")[1])
当我执行以上代码时,我发现错误“索引超出范围”。
1楼
在这里它只是意味着有时在其他几列中没有"/"
。
因此,当没有"/"
,split将仅具有一个元素。
但是,您正在访问x.split("/")[1]
。
这导致索引错误。
要解决此问题,只需检查x中是否存在"/"
或检查拆分的长度即可。
如果大于1,则表示存在"/"
。
2楼
我建议将带有索引str[0]
和str[1]
用于选择第一和第二嵌套列表。
如果/
不存在,则输出为NaN
值,而不是IndexOutOfBoundsException
。
for c in split_columns:
df1[c] = df1[c].astype(str).str.split("/").str[0]
df2[c] = df2[c].astype(str).str.split("/").str[1]
3楼
它有一个索引问题:我找到了2个解决方案:1)我将此拆分为2个(在Jupyter的2个单元中),该错误消失了。
对于split_columns中的c:df1 [c] = df1 [c] .apply(lambda x:x.split(“ /”)[0])for split_columns中的c:df2 [c] = df2 [c] .apply(lambda x:x.split(“ /”)[1])
2)我在split_columns中重命名了c的第二个索引:df1 [c] = df1 [c] .apply(lambda x:x.split(“ /”)[0])df2 [c] = df2 [c] .apply (lambda x:x.split(“ /”)[0])