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