我有一个df: col10 011392902010011 011392901010012 011392902010023 011392901010024 011392902010035 011392901010036 011392902010047 011393101010018 011392902010059 01139290301001 ... 5908 01139ÅÊ210205909 01139ÅÊ210135910 01139ÅÊ110085911 01139ÅÊ210115912 01139ÅÊ03003在int唯一的情况下,我需要将前7个数字提取到新列中;在包含字符的情况下,我需要将前5和8,9个数字提取到新列中。我将这段代码尝试到一个组成的数据帧上,尝试解决该问题的方法,它可以工作,但是当我在实际数据集上尝试它时,它并没有按预期工作,主要原因是我的实际数据中df有整数,并且对他们。df['col2']=df[col1][0:5]+df['col1'][8]0 01139290201001011392902010051 01139290101001011392902010052 01139290201002011392902010053 01139290101002011392902010054 01139290201003011392902010055 NaN6 NaN7 NaN8 NaN9 NaN还为什么会导致NaN值?我希望它看起来像这样: 01139290201001 to 0113929 for integer only rows and like this for the others 01139ÅÊ03003 to 0113903
1 回答

Cats萌萌
TA贡献1805条经验 获得超9个赞
使用 .apply
前任:
import pandas as pd
df = pd.DataFrame({"col1": ["01139290201001", "01139290101001", "01139290201002", "01139ÅÊ21020", "01139ÅÊ21013", "01139ÅÊ11008"]})
df["col2"] = df["col1"].apply(lambda x: x[:7] if x.isdigit() else x[:5]+x[9:11] )
print(df)
输出:
col1 col2
0 01139290201001 0113929
1 01139290101001 0113929
2 01139290201002 0113929
3 01139ÅÊ21020 0113921
4 01139ÅÊ21013 0113921
5 01139ÅÊ11008 0113911
添加回答
举报
0/150
提交
取消