我是熊猫的新手,我想知道如何通过只提取行的一部分来清理数据。假设我有如下数据:
column1 date key
A 2016 SB
A 2017 B
B 2015 SB
C 2014 SB
C 2014 PB
C 2015 B
C 2016 SB如何清理数据,以便对于每个相同的column1值,我只提取前两行值,而忽略其余的值(例如,对于C值,只有2014年SB和2014年PB是我得到的)?
column1 date key
A 2016 SB
A 2017 B
B 2015 SB
C 2014 SB
C 2014 PB谢谢
发布于 2017-07-25 14:00:10
您需要GroupBy.head,也可以检查文档
df = df.groupby('column1').head(2)
print (df)
column1 date key
0 A 2016 SB
1 A 2017 B
2 B 2015 SB
3 C 2014 SB
4 C 2014 PB发布于 2017-07-25 14:04:28
In [82]: df.loc[df.groupby('column1').cumcount().lt(2)]
Out[82]:
column1 date key
0 A 2016 SB
1 A 2017 B
2 B 2015 SB
3 C 2014 SB
4 C 2014 PB发布于 2017-07-25 14:12:06
很沮丧@MaxU的陈述是多么真实..。我想出了一个荒谬的解决方案。
df.groupby('column1').head(2) 很难超越这个..。;) - MaxU
df.drop_duplicates('column1').append(
df[df.duplicated('column1')].drop_duplicates('column1')
)
column1 date key
0 A 2016 SB
2 B 2015 SB
3 C 2014 SB
1 A 2017 B
4 C 2014 PBhttps://stackoverflow.com/questions/45305564
复制相似问题