熊猫基于另一个数据框的组创建多个数据框

时间:2020-09-11 08:43:53

标签: python pandas dataframe

我有一个熊猫数据框

public int callValidateUrl() throws IOException {
    URL url = new URL("http://localhost:9000/validate");

    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");

    con.setDoOutput(true);
    String jsonInputString = "{username: 'foo', password: 'bar'}";
    try (OutputStream os = con.getOutputStream()) {
        byte[] input = jsonInputString.getBytes("utf-8");
        os.write(input, 0, input.length);
    }

    return con.getResponseCode();
}

我想基于Position创建多个其他数据框,并将每个数据框命名为“ Job_as _”

预期输出为

df=pd.DataFrame({'Name':['Jhon','Andy','Jenny','Joan','Paul','Rosa'],
                 'Position':['Programmer','Designer','Programmer','Designer','Analyst','Analyst']})

3 个答案:

答案 0 :(得分:1)

您可以创建字典:

{"Job_as_"+ x : df.loc[df.Position==x, "Name"].to_list() for x in df.Position.unique()}

输出

{
 'Job_as_Programmer': ['Jhon', 'Jenny'],
 'Job_as_Designer': ['Andy', 'Joan'],
 'Job_as_Analyst': ['Paul', 'Rosa']
}

答案 1 :(得分:1)

您可以按如下方式使用groupby

import pandas as pd
df=pd.DataFrame({'Name':['Jhon','Andy','Jenny','Joan','Paul','Rosa'],
                     'Position':['Programmer','Designer','Programmer','Designer','Analyst','Analyst']})
newDf = df.groupby(["Position" , "Name"]).first()
newDf #To Print Table

输出:

Position    Name
Analyst     Paul
            Rosa

Designer    Andy
            Joan

Programmer  Jenny
            Jhon

答案 2 :(得分:1)

pandas.DataFrame.groupbypandas.Series.add_prefix一起使用:

df2 = df.groupby("Position")["Name"].apply(list)
df2.add_prefix("Job_as_").to_dict()

输出:

{'Job_as_Analyst': ['Paul', 'Rosa'],
 'Job_as_Designer': ['Andy', 'Joan'],
 'Job_as_Programmer': ['Jhon', 'Jenny']}