首页 > 解决方案 > 如何根据另一列的值从一列中获取第 n 个值(Python)

问题描述

这里有什么帮助吗?!假设我有一个包含两列的数据框:

A | B

1 | b

1 | b

1 | a

2 | a

2 | b

3 | b

3 | c

3 | d

我想为 colA 的每个值第一次出现它就像

A | B

1 | b

2 | a

3 | b

然后抓住第二次发生的事情:

A | B

1 | b

2 | b

3 | c

发生 3 次后

A | B

1 | a

2 | NULL

3 | d

关于如何做到这一点的任何提示?

标签: pythonpython-3.xpandaslistnumpy

解决方案


IIUC,这是一种方法:

df1 = df.pivot_table(index = 'A', columns = df.groupby('A').cumcount(), values = 'B', aggfunc = sum)
result = [df1[col].reset_index(name='B')  for col in df1.columns] #this will give you the list of df's

输出:

[   A   B
 0  1   b
 1  2   a
 2  3   b,
    A   B
 0  1   b
 1  2   b
 2  3   c,
    A    B
 0  1    a
 1  2  NaN
 2  3    d]

推荐阅读