我有一個資料框
ID val
1 a
2 b
3 c
4 d
5 a
7 d
6 v
8 j
9 k
10 a
我有一本字典如下:
{aa:3, bb: 3,cc:4}
在字典中,數值表示記錄的數量。數值的總和等于我在資料框中的行數。在此示例3 3 4中 = 10,我在資料框中有 10 行。
我正在嘗試按等于字典中給定數字的行拆分資料框,并將鍵作為列值填充到新列中。所需的輸出如下:
ID val. new_col
1 a. aa
2 b aa
3 c. aa
4 d. bb
5 a. bb
6 v. bb
7. d. cc
8 j. cc
9 k. cc
10 a. cc
只要記錄的數量與字典中給出的數量相匹配,填充的順序并不重要。我試圖通過遍歷 dict 來解決這個問題,但我無法使用每個新的鍵值對來隔離資料幀的特定數量的記錄。
我還嘗試pd.cut通過將 dict 值拆分為 bin 和鍵作為列值來使用。但是我收到了錯誤 ValueError: bins must increase monotonically.
uj5u.com熱心網友回復:
d = {'aa':3, 'bb': 3,'cc':4}
df['new_col'] = pd.Series([np.repeat(i, j) for i, j in d.items()]).explode().to_numpy()
df
Out[64]:
ID val new_col
0 1 a aa
1 2 b aa
2 3 c aa
3 4 d bb
4 5 a bb
5 7 d bb
6 6 v cc
7 8 j cc
8 9 k cc
9 10 a cc
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492694.html
