Python 是否使用另一列的转换值向dataframe添加新列?

Python 是否使用另一列的转换值向dataframe添加新列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个来自csv文件的熊猫数据帧,我想在Python3.8中添加3列 添加一列并将米转换为英里(长度为米,新列将为长度\英里) 添加列以将米转换为英尺(高程增量单位为米,新列将为高程增量单位为英尺) 添加一列计算难度等级,如下所示: nps难度等级=仰角增益(英尺)x 2 x距离(英里)。产品的平方根为数值等级 这需要进一步细分为1-5的难度等级。数据集中当前的难度等级没有提供信息,因此我想使用国家公园管理局的等级 如果数字难度等级为: 如果小于50,则该值为1 50-100,则难度等级

我有一个来自csv文件的熊猫数据帧,我想在Python3.8中添加3列

  • 添加一列并将米转换为英里(长度为米,新列将为长度\英里)

  • 添加列以将米转换为英尺(高程增量单位为米,新列将为高程增量单位为英尺)

  • 添加一列计算难度等级,如下所示: nps难度等级=仰角增益(英尺)x 2 x距离(英里)。产品的平方根为数值等级

  • 这需要进一步细分为1-5的难度等级。数据集中当前的难度等级没有提供信息,因此我想使用国家公园管理局的等级

    如果数字难度等级为:

    如果小于50,则该值为1 50-100,则难度等级为2 101-150,则难度等级为3 151-200,则难度等级为4 200以上,则难度等级为5

    理想情况下,这将计算并将数字1-5放在列中,但是为#3添加两个新列也可以

    以下是我的数据框中的列和几行中的值。我还没有考虑在数据框中设置nps 1-5评级,我不确定是否可以或需要在函数中的数据框之外进行设置。 不幸的是,它似乎没有像我希望的那样添加专栏,所以我想我一定是做错了什么。 到目前为止,我掌握了一些代码

    df = pd.read_csv('data.csv')
    df.assign(length_miles = lambda x: x['length'] * 0.00062137, axis = 1)
    df.assign(elevation_gain_ft = lambda x: x['elevation_gain'] * 3.28084, axis = 1)
    df.assign(num_dif_rating = lambda x: np.sqrt( x['length_miles'] * 2 * x['elevation_gain_ft'], axis = 1))
    

    您需要使用
    assign
    方法:

    df.assign(YourColumn = lambda x: conversion_formula(x['Meters']), axis = 1)
    
    以下是指向文档的链接:


    祝你好运!

    我让它这样工作。它按照我需要的方式清理数据

    def data_cleanup():
    df = pd.read_csv('AllTrails data.csv')
    # convert meters to miles and feet and add columns
    df['length_miles']=df['length'].apply(lambda x : x*0.000621371)
    df['elevation_gain_feet']=df['elevation_gain'].apply(lambda x : x*3.28084)
    def difficulty_rating(x, y):
        res = np.sqrt(x * y * 2)
        if res < 50:
            return 1
        elif res >= 50 and res <= 100:
            return 2
        elif res >= 101 and res <= 150:
            return 3
        elif res >= 151 and res <= 200:
            return 4
        else:
            return 5
    df['nps_difficulty_rating'] = df.apply(lambda x: difficulty_rating (x.length_miles, x.elevation_gain_feet), axis=1)
    
    df.to_csv('np trails.csv')
    
    def data_cleanup():
    df=pd.read\u csv('AllTrails data.csv')
    #将米转换为英里和英尺并添加列
    df['length_miles']=df['length']。适用(λx:x*0.000621371)
    df[‘高程增益’英尺]=df[‘高程增益’]。应用(λx:x*3.28084)
    def难度等级(x,y):
    res=np.sqrt(x*y*2)
    如果res<50:
    返回1
    
    ELIF RES=50和RES=101,RES=151,RES显示了一个最小的可重复的例子,欢迎使用堆栈溢出,请考虑退房,因此,为了解决编程中的特定问题,您应该提供一个迄今为止所尝试的代码,描述问题,显示自己试图解决问题的努力。(你以前读过什么等),希望这能解释为什么人们会否决你的问题。当然,让我知道这是否更好,因为我仍然对此有问题,也许这会帮助我解决它。@hiker是的,现在看起来好多了,但是如果可能的话,请不要上传数据的图像,检查一下