【发布时间】:2021-10-24 19:23:13
【问题描述】:
我低于 1000 万条记录的数据集,超过 47 列
| name | account | amount |
|---|---|---|
| user1 | 12345 | 100$ |
| user2 | 123456 | 200$ |
| user1 | 54321 | 200$ |
| user2 | 123456 | 100$ |
我需要在这里看到的几件事:
- 每个用户和/或每个帐户的金额总和。我相信我已经在下面实现了这一点,看起来还可以
df.groupby(['account','name'])['amount'].sum()
- 最活跃的客户和帐户。所以我需要这些数据在一个数据框中,但我没有做到这一点,我只能指定其中一个
df['account'].value_counts().to_frame().reset_index()
这显示了特定帐户在数据集中出现的次数。
| account | occurence |
|---|---|
| 123456 | 2 |
| 54321 | 1 |
| 12345 | 1 |
我需要查看每个帐户的客户名称。 我在下面尝试过,但它不起作用。
df[['account','name']].apply(pd.Series.value_counts)
等于
| account | name | |
|---|---|---|
| user1 | NaN | 2.0 |
| user2 | NaN | 1.0 |
我想要的结果如下:
| name | account | amount |
|---|---|---|
| user1 | 12345 | 100$ |
| 54321 | 200$ | |
| user2 | 123456 | 300$ |
我还尝试创建一个单独的数据框,该数据框将包含所有唯一帐户与名称,然后将其与 value_counts 的结果合并,但它没有显示正确的发生次数。
【问题讨论】:
-
您可以做的是创建一个名为 name_account 的附加列,其中包含连接在一起的名称和帐户。然后使用
df.groupby('account_name')['amount'].sum()对重复项求和。