【发布时间】:2020-06-26 12:09:34
【问题描述】:
我有一个这样的 excel 文件:
.----.-------------.-------------------------.-----------------.
| | ID | Shareholder - Last name | DM Cognome |
:----+-------------+-------------------------+-----------------:
| 1. | 01287560153 | MASSIRONI | Bocapine Ardaya |
:----+-------------+-------------------------+-----------------:
| | | CAGNACCI | |
:----+-------------+-------------------------+-----------------:
| 2. | 05562881002 | | Directors |
:----+-------------+-------------------------+-----------------:
| 3. | 04113870655 | SABATO | Sabato |
:----+-------------+-------------------------+-----------------:
| | | VILLARI | |
:----+-------------+-------------------------+-----------------:
| 4. | 01419190846 | SALMERI | Salmeri |
:----+-------------+-------------------------+-----------------:
| | | MICALIZZI | Lipari |
:----+-------------+-------------------------+-----------------:
| | | LIPARI | |
'----'-------------'-------------------------'-----------------'
我用 pandas 和ffill ID 列打开这个文件,因为有子行。然后 groupby 按 ID 获取 Shareholder - Last name 和 DM\nCognome 列上任何相等值的计数。然而我做不到。在这种情况下,结果应该是0 row1 0 row2 1 row3 2 row4。
需要注意的是,第 4 行由 3 个子行组成,第 3 行也由 2 个子行组成。(例如)
我有两个问题:
- 读取上述无组织的 Excel 文件并进行大量比较、替换值等的最佳方法是什么?
- 我怎样才能达到我前面提到的结果。
这是我所做的,但它不起作用:
data['ID'] = data['ID'].fillna(method='ffill')
data.groupby('ID', sort=False, as_index=False)['Shareholder - Last name', 'DM\nCognome'].apply(lambda x: (x['Shareholder - Last name']==x['DM\nCognome']).count())
【问题讨论】:
标签: python-3.x excel pandas