mayeye1989
2019-04-12 14:25
采纳率: 54.5%
浏览 5.0k

Pandas 根据条件创建新列

我有这样一个Pandas Dataframe:

index   col1     col2  

1       [1,2]    [apple, peer, oragne, banana]  
2       [2]      [pancake, soda]

我想创建一个新列,根据col1的index来选择col2的item,
例如:

index   col1     col2                                   col3

1       [1,2]    [apple, peer, oragne, banana]  [apple,peer]  
2       [2]      [pancake, soda]                         [soda]

请问应该如何操作?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 吃鸡王者 2019-04-12 16:15

    clo3=[]
    for i in range(data.shape[0]):
    tmp=[]
    for j in data['col1'][i]:
    tmp.append(data['col2'][i][j-1])
    col3.append(tmp)
    data['col3']=col3

    打赏 评论
  • 翩翩少年郎儿 2019-04-12 17:25

    我有这样一个数据框架:

    Clinic Number date
    0 1 2015-05-05
    1 1 2015-05-05
    2 1 2016-01-01
    3 2 2015-05-05
    4 2 2016-05-05
    5 3 2017-05-05
    6 3 2017-05-05
    我想创建一个新的列并根据一些条件填写它。所以新的数据框架应该是这样的:

    Clinic Number date row_number
    0 1 2015-05-05 1
    1 1 2015-05-05 1
    2 1 2016-01-01 2
    3 2 2015-05-05 3
    4 2 2016-05-05 4
    5 3 2017-05-05 5
    6 3 2017-05-05 5
    在新列中放置条目的规则是:如果诊所的编号和日期相同,它们将得到相同的编号,如果更改,则会增加。

    例如这里1 2015-05-05有两行有相同的Clinic Number and date所以他们都得到1下一行的诊所号=1,但日期与前几行不相同,因此它将得到2。

    def createnumber(x):
    x['row_number'] = i

    d['row_number']= pd1.groupby(['Clinic Number','date']).apply(createnumber)

    打赏 评论

相关推荐 更多相似问题