如何将列的值转换为行-dataframgroupby

我有一张“借款人个人ID”和“贷款ID”表。


BwrPersonld LoanId

113225  16330

113225  27073

113225  68842

113253  16341

113269  16348

113285  16354

113289  26768

113297  16360

113299  16361

113319  16369

113418  16403

113418  26854

我想知道哪些贷款属于同一借款人。所以我“groupby”“BwrPersonalId”和“LoanId”,如下所示。

http://img3.mukewang.com/64ad04040001eac504580745.jpg

现在我就这样期待着。

http://img.mukewang.com/64ad040f0001a5b805390367.jpg

这是我的代码,但它不起作用。


grouped = pd.DataFrame()

unique = loan['BwrPersonId'].unique()

grouped['BwrPersonId'] = ''*len(loan['BwrPersonId'].unique())

grouped['Loan1'] = ''

grouped['Loan2'] = ''

grouped['Loan3'] = ''

grouped['Loan4'] = ''

grouped['Loan5'] = ''

grouped.iloc[:,0] = unique

for i in grouped.index:

    idloan = loan.loc[loan['BwrPersonId'] == unique[i], 'LoanId']

    grouped.iloc[i,1:len(idloan)+1] = idloan

    print(i)

我现在该怎么做呢?还有其他方法可以简化代码吗?非常感谢你的帮助。


白猪掌柜的
浏览 120回答 1
1回答

一只甜甜圈

基本上,您需要做的是创建一个临时变量,该临时变量将使用要排序的数据,以及负责 Id 的名称,以便根据贷款对 Id 进行排序。import pandas as pdimport numpy as npfrom collections import defaultdictfrom itertools import countdict = defaultdict(count)id, name = pd.factorize([*zip(grouped.id, grouped.name)])joined = np.array([next(dict[x]) for x in id])lenOfr, Max = len(name), joined.max() + 1temp = np.empty((lenOfr, Max), dtype=np.object)temp[id, joined] = grouped.LoanIddf1 = pd.DataFrame(name.tolist(), columns=['BwrPersonId'])df2 = pd.DataFrame(temp, columns=['Loan1', 'Loan2', 'Loan3', 'Loan4', 'Loan5'])final = df1.join(df2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python