我的 df 如下所示
id number
123 1
256 2
879 3
132 4
3215 5
216 6
輸出應該是這樣的:
id number
123 1
256 2
879 3
132 4
3215 5
216 6
NaN 7
NaN 8
NaN 9
NaN 10
所以基本上我需要在列號和列 id 的前一行中添加 1 不應該有任何值。我需要 30 個新行。我試過這個:
n = 30
for i in range(n):
df = df.append(df.tail(1).add(1))
但結果不正確。你有什么想法?感謝幫助。問候托馬斯
uj5u.com熱心網友回復:
你可以set_index,reindex并且reset_index:
df.set_index('number').reindex(range(1, 11)).reset_index()
輸出:
number id
0 1 123.0
1 2 256.0
2 3 879.0
3 4 132.0
4 5 3215.0
5 6 216.0
6 7 NaN
7 8 NaN
8 9 NaN
9 10 NaN
如果要保持列順序:
cols = df.columns
df.set_index('number').reindex(range(1, 11)).reset_index()[cols]
id number
0 123.0 1
1 256.0 2
2 879.0 3
3 132.0 4
4 3215.0 5
5 216.0 6
6 NaN 7
7 NaN 8
8 NaN 9
9 NaN 10
uj5u.com熱心網友回復:
Amerge是另一個有效的選項,并保持列順序:
df.merge(pd.Series(range(1,11), name = 'number'),how = 'right')
id number
0 123.0 1
1 256.0 2
2 879.0 3
3 132.0 4
4 3215.0 5
5 216.0 6
6 NaN 7
7 NaN 8
8 NaN 9
9 NaN 10
uj5u.com熱心網友回復:
嘗試set_index和reindex:
>>> df.set_index('number').reindex(range(11)).reset_index()
number id
0 0 NaN
1 1 123.0
2 2 256.0
3 3 879.0
4 4 132.0
5 5 3215.0
6 6 216.0
7 7 NaN
8 8 NaN
9 9 NaN
10 10 NaN
>>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315285.html
上一篇:將串列串列轉換為資料框列
