python根据另一列的条件在数据框中添加行

时间:2018-12-02 10:46:14

标签: python pandas

我所拥有的:

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.1version3变成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")

1 个答案:

答案 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