python – 从另一个Dataframe创建Dataframe

我有一个如下所示的数据框

   Index  Batch    Name
    0        1      Jon
    1    
    2        2      Adam
    3         
    4        3      Voges
    5       
    6        4      Jon

我想从这个数据框中创建另一个数据帧,并将批次编号分组

Batch   Name/Batches
1        Jon(1,4)
2        Adam(2)
3        Voges(3)
4        Jon(1,4)

我怎么能这样做,如果我从现有DF创建一个新列表或ordereddict然后将其转换为另一个DF,或者这可以在运行中完成.

更新:
 在他们之间编辑Spaces

最佳答案 这是使用groupby变换和自定义函数的一种方法:

def stringer(x):
    return '('+', '.join(map(str, x))+')'

df['Name'] += df.groupby('Name')['Batch'].transform(stringer)

print(df)

   Batch       Name
0      1  Jon(1, 4)
1      2    Adam(2)
2      3   Voges(3)
3      4  Jon(1, 4)

更新空行的记帐

在这种情况下你可以使用numpy.where:

import numpy as np

def stringer(x):
    return '('+', '.join(map(str, map(int, x)))+')'

s = df.dropna(subset=['Name']).groupby('Name')['Batch'].apply(stringer)

df['Name/Batch'] = np.where(df['Name'].notnull(),
                            df['Name'] + df['Name'].map(s),
                            df['Name'])

print(df)

   Index  Batch   Name Name/Batch
0      0    1.0    Jon  Jon(1, 4)
1      1    NaN    NaN        NaN
2      2    2.0   Adam    Adam(2)
3      3    NaN    NaN        NaN
4      4    3.0  Voges   Voges(3)
5      5    NaN    NaN        NaN
6      6    4.0    Jon  Jon(1, 4)
点赞