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)