加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从另一个Dataframe创建Dataframe

发布时间:2020-12-20 11:05:44 所属栏目:Python 来源:网络整理
导读:我有一个如下所示的数据框 Index Batch Name 0 1 Jon 1 2 2 Adam 3 4 3 Voges 5 6 4 Jon 我想从这个数据框中创建另一个数据帧,并将批次编号分组 Batch Name/Batches1 Jon(1,4)2 Adam(2)3 Voges(3)4 Jon(1,4) 我怎么能这样做,如果我从现有DF创建一个新列表或o
我有一个如下所示的数据框

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 '('+',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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读