Python 熊猫:按列值删除准重复项

Python 熊猫:按列值删除准重复项,python,pandas,Python,Pandas,我有一个列表,比如说,看起来像这样(我把它放在DF中): 列是['name'、'month'、'day'、'year'] 我基本上希望输出一个新的DF,每个人只输出最旧的一行。因此,它应该包含两行,一行是2016年1月1日的john,另一行是2016年3月5日的sally 我在DF的内部一直很难进行这种选择,希望有人能就如何实现上述目标提供一些建议。您可以按年、月、日对数据帧进行排序,然后从每个名称中选择第一行: df.sort_values(by = ['year', 'month', 'da

我有一个列表,比如说,看起来像这样(我把它放在DF中):

列是
['name'、'month'、'day'、'year']

我基本上希望输出一个新的DF,每个人只输出最旧的一行。因此,它应该包含两行,一行是2016年1月1日的john,另一行是2016年3月5日的sally


我在DF的内部一直很难进行这种选择,希望有人能就如何实现上述目标提供一些建议。

您可以按
年、月、日对数据帧进行排序,然后从每个
名称中选择第一行:

df.sort_values(by = ['year', 'month', 'day']).groupby('name').first()

#   month   day year
# name          
# john  1   1   2016
#sally  3   5   2016
数据:


您可以按
年、月、日对数据框进行排序,然后从每个
名称中选取第一行:

df.sort_values(by = ['year', 'month', 'day']).groupby('name').first()

#   month   day year
# name          
# john  1   1   2016
#sally  3   5   2016
数据:

选项1
使用
pd.to_datetime
解析['year'、'month'、'day']列。
groupby('name')

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.sort_values(['name', 'date']).groupby('name').first()

选项2
相同的
pd.to_datetime
用法。
groupby('name')
使用
idxmin
查找最小日期

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.ix[df.groupby('name').date.idxmin()]

选项1
使用
pd.to_datetime
解析['year'、'month'、'day']列。
groupby('name')

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.sort_values(['name', 'date']).groupby('name').first()

选项2
相同的
pd.to_datetime
用法。
groupby('name')
使用
idxmin
查找最小日期

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.ix[df.groupby('name').date.idxmin()]

不需要按
名称进行排序,是吗?不需要,但如果要查看交互结果,我想将名称保存在一起。不需要。按
name
排序是不必要的,是吗?不,但如果要查看交互结果,我想将名称保持在一起。不过没必要。