我有一個看起來像這樣的資料框:

這是同一影像的文本(為方便起見):
ticker field value
0 NESNVX 0 06/14/26 Corp px_last 95.083
1 NESNVX 0 06/14/26 Corp coupon 0
2 NESNVX 0 06/14/26 Corp maturity 2026-06-14
3 BE0002256254 Corp px_last 98.201
4 BE0002256254 Corp coupon 1
5 BE0002256254 Corp maturity 2026-07-22
6 BE0002276450 corp px_last 98.423
7 BE0002276450 corp coupon 1.375
8 BE0002276450 corp maturity 2027-04-07
代碼列由 n 個欄位重復。因此,例如,如果有 3 個唯一field專案,ticker則重復 3 次(如上例所示)。
我如何將其轉換為網格,使其僅tickers(作為索引)與fields(作為列標題)value作為矩陣的元素?
我曾嘗試使用該groupby功能,但似乎無法讓它按我需要的方式作業。
我尋求的結果是:
ticker px_last coupon maturity
0 NESNVX 0 06/14/26 Corp 95.083 0 2026-06-14
1 BE0002256254 Corp 98.201 1 2026-07-22
2 BE0002276450 corp 98.423 1.375 2027-04-07
uj5u.com熱心網友回復:
pandas.pivot可能是您正在尋找的。
df = pd.DataFrame({
'ticker': [
'NESNVX 0 06/14/26 Corp',
'NESNVX 0 06/14/26 Corp',
'NESNVX 0 06/14/26 Corp',
'BE0002256254 Corp',
'BE0002256254 Corp',
'BE0002256254 Corp',
'BE0002276450 corp',
'BE0002276450 corp',
'BE0002276450 corp'
],
'field': ['px_last', 'coupon', 'maturity', 'px_last', 'coupon', 'maturity', 'px_last', 'coupon', 'maturity'],
'value': [95.083, 0, '2026-06-14', 98.201, 1, '2026-07-22', 98.423, 1.375, '2027-04-07']
})
result = df.pivot(index='ticker', columns='field', values='value')
這將創建以field列為索引的資料框,要使用整數索引并設定field為列,您可以使用:
result.reset_index(inplace=True)
result = result.rename_axis(None, axis=1).reset_index(drop=True)
結果:
ticker coupon maturity px_last
0 BE0002256254 Corp 1 2026-07-22 98.201
1 BE0002276450 corp 1.375 2027-04-07 98.423
2 NESNVX 0 06/14/26 Corp 0 2026-06-14 95.083
uj5u.com熱心網友回復:
一種方法是創建另一個字典以適合您在這種情況下的需要:假設 df 是您的初始資料庫
Dict=dict()
Dict['ticker']=[]
for n in range(len(df)//3):
Dict['ticker'].append(df.loc[3*n][0])
Dict[df.loc[n][1]]=[]
for n in range(len(df)):
Dict[df.loc[n%3][1]].append(df.loc[n][2])
df2=pd.DataFrame(Dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/461330.html
