Python 熊猫:按列值删除准重复项
我有一个列表,比如说,看起来像这样(我把它放在DF中):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
列是['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
排序是不必要的,是吗?不,但如果要查看交互结果,我想将名称保持在一起。不过没必要。