首页 > 解决方案 > 根据其他列值/ Pandas -Python 在数据框中创建 ID 列

问题描述

我有一个这样的数据框

L_1  D_1   L_2  D_2    L_3    D_3         C_N
1    Boy                                 Boy||
1    Boy   1-1  play                     Boy|play|
1    Boy   1-1  play  1-1-21  car        Boy|play|car
1    Boy   1-1  play  1-1-1   online     Boy|play|online
2    Girl                                Girl||
2    Girl  2-1  dance                    Girl|dance|

我已经C_N使用代码创建了选项卡

df['C_N'] = df[['D_1','D_2', 'D_3']].apply(lambda x: '|'.join(x), axis=1)

现在我想要另一列,我也可以在其中获取特定组的 ID,我理想的输出是:

L_1  D_1   L_2  D_2    L_3    D_3      IDs        C_N
1    Boy                               1         Boy||
1    Boy   1-1  play                   1-1       Boy|play|
1    Boy   1-1  play  1-1-21  car      1-1-21    Boy|play|car
1    Boy   1-1  play  1-1-1   online   1-1-1     Boy|play|online
2    Girl                              2         Girl||
2    Girl  2-1  dance                  2-1       Girl|dance|

任何人都可以在这个问题上帮助我。先感谢您!

标签: pythonpython-3.xpandasdataframepython-2.7

解决方案


我已经定义了一个自定义函数来检索所需的数据:

df = pd.DataFrame([
    ['1', 'Boy','','','',''],
    ['1', 'Boy','1-1','play','',''],
    ['1', 'Boy','1-1','play','1-1-21','car'],
    ['1', 'Boy','1-1','play','1-1-1','online'],
    ['2', 'Girl','','','',''],
    ['2', 'Girl','','dance','','']], columns=['L_1','D_1','L_2','D_2','L_3','D_3']
)
df['C_N'] = df[['D_1','D_2', 'D_3']].apply(lambda x: '|'.join(x), axis=1)

def get_data(x,y,z):
    result = []
    if x != '':
        result.append(x)
    if y != '':
        result.append(y)
    if z != '':
        result.append(z)
    return result[-1]

df['IDs'] = ''
df['IDs'] = df.apply(lambda row: get_data(row['L_1'], row['L_2'], row['L_3']), axis=1)

输出df

在此处输入图像描述


推荐阅读