python - 如何根据另一列的值从一列中获取第 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
关于如何做到这一点的任何提示?
解决方案
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]
推荐阅读
- javascript - 如何在不同的组件上使用 jQuery(Angular CLI)
- scala - 如何为以下情况制作模式和警报
- python - python中跨进程访问的“已发布”值
- ios - iOS - Swift:在主线程中从数据库中获取数据,而不是在后台
- c++ - 通过套接字c ++传递包含字符串作为数据成员的结构
- swift - 快速更改初始视图控制器
- git - 如何合并以前拒绝/恢复的提交?
- java - 错误:我的 Android Studio 代码中的表达式开头非法
- arraylist - 如何打印存储在 HashMap 中的完整 Arraylist
- javascript - 如何在 VSCode 中智能感知别名模块路径