Python 枢轴中的重复值

Python 枢轴中的重复值,python,python-3.x,pandas,dataframe,pivot,Python,Python 3.x,Pandas,Dataframe,Pivot,我有两个数据帧df1和df2。 一个是客户债务,另一个是客户付款日期 我想创建一个新的数据框,其中包含截至2017年1月01日的当月已支付债务的% 问题在于,一些客户在同一个月内支付了两次,因此存在重复值,pivot无法以这种方式运行,它显示: ValueError:索引包含重复的条目,无法重塑 我如何解决这个问题 谢谢你抽出时间 import pandas as pd d1 = {'client number': ['2', '2','3','6','7','7','8','8','8',

我有两个数据帧
df1
df2
。 一个是客户
债务
,另一个是客户
付款
日期

我想创建一个新的数据框,其中包含截至2017年1月
01日的当月已支付债务的%

问题在于,一些客户在同一个月内支付了两次,因此存在重复值,pivot无法以这种方式运行,它显示: ValueError:索引包含重复的条目,无法重塑

我如何解决这个问题

谢谢你抽出时间

import pandas as pd 

d1 = {'client number': ['2', '2','3','6','7','7','8','8','8','8','8','8','8','8'],
     'month': [1, 2, 3,1,10,12,3,5,8,1,1,4,5,8],
    'year':[2013,2013,2013,2019,2013,2013,2013,2013,2013,2014,2014,2015,2016,2017],
    'payment' :[100,100,200,10000,200,100,300,500,200,100,200,200,500,50]}

df1 = pd.DataFrame(data=d1).set_index('client number')

d2 = {'client number': ['2','3','6','7','8'],
     'debt': [200, 600,10000,300,3000]}

df2 = pd.DataFrame(data=d2)


df2 = df2.set_index('client number')

df1['pct'] = df1['payment'].div(df1.index.map(df2['debt'])).round(2)
df1['date'] = df1['year'].astype(str) + '-' + df1['month'].astype(str).str.zfill(2)
df3 = df2.join(df1.pivot(columns='date', values='pct').fillna(0)).reset_index()
agg_func='sum'
一起使用,因为可以将每月债务付款的分数相加:

df3 = (
    df2.join(
        df1.pivot_table(index=df1.index, columns='date', values='pct', aggfunc='sum').fillna(0))
    .reset_index()
)
结果:

# print(df3)

  client number   debt  2013-01  2013-02  2013-03  2013-05  2013-08  2013-10  2013-12  2014-01  2015-04  2016-05  2017-08  2019-01
0             2    200      0.5      0.5     0.00     0.00     0.00     0.00     0.00      0.0     0.00     0.00     0.00      0.0
1             3    600      0.0      0.0     0.33     0.00     0.00     0.00     0.00      0.0     0.00     0.00     0.00      0.0
2             6  10000      0.0      0.0     0.00     0.00     0.00     0.00     0.00      0.0     0.00     0.00     0.00      1.0
3             7    300      0.0      0.0     0.00     0.00     0.00     0.67     0.33      0.0     0.00     0.00     0.00      0.0
4             8   3000      0.0      0.0     0.10     0.17     0.07     0.00     0.00      0.1     0.07     0.17     0.02      0.0

您可以改用
pivot\u表
。这允许您应用函数来聚合重复条目。例如,可以取重复值的最大值。另外,似乎您应该在这个函数调用中包含
索引
参数。将原来的
pivot
调用替换为以下内容:

df1.pivot_table(columns='date', index='client number', values='pct', aggfunc='max').fillna(0)

您希望如何处理重复的值?平均他们,加上他们?此外,预期的产出也很有用。