我正在用Jupyter笔记本制作一些毛利报告。我已经将数据作为csv从CRM中导出,并且正在使用Pandas来处理数据。一些数据在几列中重复。我需要删除那些列中的重复值,但保留其余行。
我尝试对两列的子集进行drop_duplicates,但它删除了整个行。
INV INV SUB PO Number PO Subtotal \
0 INV-002504 USD 350.00 PO-03977 240
1 INV-002507 USD 1,400.00 PO-03846 603.56
2 NaN NaN PO-03847 295
3 INV-002489 USD 891.25 PO-03861 658.31
4 INV-002453 USD 3,132.50 PO-03889 4751.19
5 INV-002537 USD 3,856.29 PO-03889 4751.19
6 INV-002420 USD 592.43 PO-03577 1188.46
7 INV-002415 USD 10,779.00 PO-03727 5389.21
第4行和第5行是在PO Number和PO小计列中重复的示例。
我希望输出删除重复项,因此在所有情况下该值仅显示一次。
INV INV SUB PO Number PO Subtotal \
0 INV-002504 USD 350.00 PO-03977 240
1 INV-002507 USD 1,400.00 PO-03846 603.56
2 NaN NaN PO-03847 295
3 INV-002489 USD 891.25 PO-03861 658.31
4 INV-002453 USD 3,132.50 PO-03889 4751.19
5 INV-002537 USD 3,856.29
6 INV-002420 USD 592.43 PO-03577 1188.46
7 INV-002415 USD 10,779.00 PO-03727 5389.21
答案 0 :(得分:0)
使用DataFrame.duplicated
检查哪些行包含基于{
"unknown key": ["list", "of", "random", "strings"]
}
和PO Number
的重复项。然后有条件地将值PO Subtotal
替换为np.where
:
''
或使用m = df.duplicated(['PO Number', 'PO Subtotal'])
df['PO Number'] = np.where(m, '', df['PO Number'])
df['PO Subtotal'] = np.where(m, '', df['PO Subtotal'])
选择正确的行和列,并用.loc
替换这些行:
''
输出
m = df.duplicated(['PO Number', 'PO Subtotal'])
df.loc[m, ['PO Number', 'PO Subtotal']] = ''