我所拥有的:
df = pd.DataFrame(data = ["version11.11","version2.2","version3"], columns=["software_version"])
Index software_version
0 version11.11
1 version2.2
2 version3
我要做什么:
用于检测数据帧列中倒数第二个字符的类型,称为software_version
,并根据该条件在数据帧中创建新列。
如果倒数第二个字符是数字或字母,请提取全名而不使用最后的字母/数字。例如version11.11
变成version11.1
或version3
变成version
。 elif,它的小数位然后在小数位前提取til,version2.2
变成version2
输出应为:
Index software_version main_software
0 version11.11 version11.1
1 version2.2 version2
2 version3 version
我到目前为止所做的事情:
如何整洁地在main_software
上方添加列?
import pandas as pd
df = pd.DataFrame(data = ["version11.11","version2.2","version3"], columns=["software_version"])
for name in df.software_version:
if name[-2].isalnum():
print(name[:-1])
elif name[-2] == ".":
print(name[:-2])
else :
print("!Alphanum-dot")
答案 0 :(得分:1)
您可以先定义一个函数,对字符串进行必要的更改。
def GetMainSoftware(string):
new_string=string[:-1] #first remove the last character
if(new_string[-1]=="."): #if "." is present, remove that too
return new_string[:-1]
else:
return new_string
然后在数据框上使用apply
,以创建具有这些详细信息的新列。
df["main_software"]=df.apply(lambda row: GetMainSoftware(row["software_version"]),axis=1)
df
现在是:
software_version main_software
0 version11.11 version11.1
1 version2.2 version2
2 version3 version