我有一個這樣的df:
ID
0 123
1 123
2 123
3 123 123
4 123 123
5 123
6 456
7 456
8 456
我想用map函式添加一個新的列,使用dict d
d = {'123: [1, 2, 3, 1, 2, 1], '456'/span>: [1, 2, 1]}。
預期輸出:
ID計數
0 123 1
1 123 2
2 123 3
3 123 1
4 123 2
5 123 1
6 456 1
7 456 2
8 456 1
但是df.ID.map(d)回傳
0 [1, 2, 3, 1, 2, 1]
1 [1, 2, 3, 1, 2, 1]
2 [1, 2, 3, 1, 2, 1]
3 [1, 2, 3, 1, 2, 1]
4 [1, 2, 3, 1, 2, 1]
5 [1, 2, 3, 1, 2, 1]
6 [1, 2, 1]
7 [1, 2, 1]
8 [1, 2, 1]
預先感謝!
uj5u.com熱心網友回復:
你可以使用groupby apply:
df.groupby('ID').apply(lambda g: pd.Series(d[g.name])
例子:
>>> df['count'/span>] = df. groupby('ID').apply(lambda g: pd.Series(d[g.name]) .to_list()
>>> df
ID計數
0 123 1
1 123 2
2 123 3
3 123 1
4 123 2
5 123 1
6 456 1
7 456 2
8 456 1
uj5u.com熱心網友回復:
從你的口令中你可以得到你所需要的東西,在explode
pd.Series(d).explode().reset_index()
Out[115]。
索引0。
0 123 1
1 123 2
2 123 3
3 123 1
4 123 2
5 123 1
6 456 1
7 456 2
8 456 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309184.html
標籤:
上一篇:<p>我有兩個df,其中一個我想只保留最近的資料,即df1作為一個滾動記錄,而df2向它提供資訊。 <p>如果有一個ID出現在df1中而沒有出現在df2中,我想從df1的新迭代
