Python 如何根据其他列的数量保持行数?
这件事我已经琢磨了好几天了 例如,我在下面有一个数据框:Python 如何根据其他列的数量保持行数?,python,python-3.x,python-2.7,pandas,pandas-groupby,Python,Python 3.x,Python 2.7,Pandas,Pandas Groupby,这件事我已经琢磨了好几天了 例如,我在下面有一个数据框: +---------+---------+ | ColumnA | ColumnB | +---------+---------+ | PartA | 4 | | PartA | 4 | | PartA | 4 | | PartA | 4 | | PartA | 4 | | PartA | 4 | | PartB | 3 | |
+---------+---------+
| ColumnA | ColumnB |
+---------+---------+
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartB | 3 |
| PartB | 3 |
| PartB | 3 |
| PartB | 3 |
| PartC | 2 |
| PartC | 2 |
| PartC | 2 |
| PartC | 2 |
+---------+---------+
如何将上述数据帧转换为:
+---------+---------+
| ColumnA | ColumnB |
+---------+---------+
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartA | 4 |
| PartB | 3 |
| PartB | 3 |
| PartB | 3 |
| PartC | 2 |
| PartC | 2 |
+---------+---------+
如您所见,我希望根据ColumnB上的数字保留行数
我找到的最接近的解决方案是使用df.groupby('ColumnA').tail(3)
但我希望尾部的值根据列B不断变化
任何帮助都将不胜感激!!!谢谢你 通过以下方式与每组的列B
的第一个值一起使用:
df = df.groupby('ColumnA').apply(lambda x: x.tail(x.ColumnB.iat[0])).reset_index(drop=True)
print (df)
ColumnA ColumnB
0 PartA 4
1 PartA 4
2 PartA 4
3 PartA 4
4 PartB 3
5 PartB 3
6 PartB 3
7 PartC 2
8 PartC 2