使用 Pandas 数据框按日期排序并从第二列中提取唯一值
Sort by Date and Extract Unique values from second column using Pandas dataframe
我有一个包含约 6,200 行包含事务的数据框,并且我有 cardNumber
和 Date
的字段。数据如下所示:
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)
我有一个包含约 6,200 行包含事务的数据框,并且我有 cardNumber
和 Date
的字段。数据如下所示:
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)