Python 从另一个数据帧创建数据帧

Python 从另一个数据帧创建数据帧,python,pandas,Python,Pandas,我有一个如下所示的数据框 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

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

   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,还是可以动态完成

更新:
在它们之间用空格编辑

这里有一种方法,使用带有自定义函数的
groupby
+
transform

In [33]: df['Name/Batches'] = \
             df['Name'] + '(' + \
             df.groupby('Name')['Batch'].transform(lambda x: x.astype(str).str.cat(sep=',')) \
             + ')'

In [34]: df
Out[34]:
   Batch   Name Name/Batches
0      1    Jon     Jon(1,4)
1      2   Adam      Adam(2)
2      3  Voges     Voges(3)
3      4    Jon     Jon(1,4)
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。在这种情况下,其中

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)