使用 Pandas 数据框按日期排序并从第二列中提取唯一值

Sort by Date and Extract Unique values from second column using Pandas dataframe

我有一个包含约 6,200 行包含事务的数据框,并且我有 cardNumberDate 的字段。数据如下所示:

data = {'cardNumber': [25468421, 78745745, 25468421],
        'Date': [2019-08-28, 2019-08-29, 2019-08-30]
       }
df = pd.DataFrame(data, columns = ['cardNumber', 'Date']

同一个卡号可以出现多次。我想提取唯一的卡号并查看最近一次交易发生的时间。我想以这样的 table 结束:

|   cardNumber   |      Date       |
+----------------+-----------------+
|   78745745     |    2019-08-29   |
|   25468421     |    2019-08-30   |
+----------------+-----------------+

我们可以做到 sort_values + drop_duplicates

df = df.sort_values('Date').drop_duplicates('cardNumber', keep='last')
   cardNumber        Date
1    78745745  2019-08-29
2    25468421  2019-08-30

我认为您的数据变量声明不正确,您必须将日期值设置为字符串

data = {'cardNumber': [25468421, 78745745, 25468421],
        'Date': ['2019-08-28', '2019-08-29', '2019-08-30']
       }

之后您可以将字符串转换为日期

df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

最后,您可以按 cardNumber 和 Date idxmax 分组

import pandas as pd

data = {'cardNumber': [25468421, 78745745, 25468421],
        'Date': ['2019-08-28', '2019-08-29', '2019-08-30']
       }
df = pd.DataFrame(data, columns = ['cardNumber', 'Date'])
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
df.loc[df.groupby('cardNumber').Date.idxmax()]

print(df)