我过去常常执行此类操作来消除DataFrame中的重复记录
import pandas as pd
data = [
[669, 1, 2003, 2],
[673, 1, 2003, 2],
[675, 1, 2004, 1],
[739, 1, 2004, 1],
[741, 1, 2003, 1],
[773, 1, 2004, 1],
[791, 1, 2004, 1],
[794, 1, 2004, 1],
]
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D'])
dfg = df.groupby(['A', 'B', 'C', 'D'])
dff = dfg.first().reset_index()
print pd.__version__
print
print df
print
print dff
print
输出如下:
0.15.1
A B C D
0 669 1 2003 2
1 673 1 2003 2
2 675 1 2004 1
3 739 1 2004 1
4 741 1 2003 1
5 773 1 2004 1
6 791 1 2004 1
7 794 1 2004 1
Empty DataFrame
Columns: [A, B, C, D]
Index: []
您可以看到dff DataFrame为空。我不明白为什么。
但是,如果我添加一个虚拟列' E'并按其他一切分组,然后只切片我想要的列,一切都很好。
df_ = df.copy()
df_['E'] = 'E'
dfg_ = df_.groupby(['A', 'B', 'C', 'D'])
dff_ = dfg_.first().reset_index()
print df_[['A', 'B', 'C', 'D']]
print
print dff_[['A', 'B', 'C', 'D']]
我得到了这个输出:
A B C D
0 669 1 2003 2
1 673 1 2003 2
2 675 1 2004 1
3 739 1 2004 1
4 741 1 2003 1
5 773 1 2004 1
6 791 1 2004 1
7 794 1 2004 1
A B C D
0 669 1 2003 2
1 673 1 2003 2
2 675 1 2004 1
3 739 1 2004 1
4 741 1 2003 1
5 773 1 2004 1
6 791 1 2004 1
7 794 1 2004 1
所以我的问题是这些:
谢谢, PIR