嗨,新年快樂:)
我在 SQLite3 中有一個資料庫,其中 ID 是主鍵,如果添加了具有相同 ID 號的新行,它將用新資料替換該行。但是,如果 Target 為空,則為此生成 CSV 檔案的程式會放入 ID 0。問題是如果有幾行 ID 為 0,則資料庫中將只有一行,因為如果有幾行,它會替換 ID。當我從資料庫中查詢資料時,這會在我的應用程式中產生問題,因為我必須有兩個目標,1 和 2 來自具有相同編號的中繼。我想要做的是每個帶有0的ID都必須轉換為1000到2000之間的隨機整數,并且該亂數不能生成兩次。
我試過df.loc[df['ID'] == 0,'ID'] = df['ID'].apply(lambda x: np.random.normal(0,1))
df,但這只會隨機浮動,我不能使用它。
我該如何解決這個問題?預先感謝您的回答:)
LeonID Relay Target ... Klasse Fyll ID
0 2 1 1 ... 3 0 210
1 2 1 2 ... NaN 0 0
2 2 2 1 ... V55 0 208
3 2 2 2 ... 2 0 211
4 2 3 1 ... V55 0 209
5 2 3 2 ... KIK 0 226
6 2 4 1 ... 4 0 218
7 2 4 2 ... 4 0 212
8 2 5 1 ... NaN 0 0
9 2 5 2 ... 2 0 220
10 2 6 1 ... 2 0 213
11 2 6 2 ... 2 0 225
12 2 7 1 ... EJ 0 219
13 2 7 2 ... 2 0 224
14 2 8 1 ... 2 0 221
15 2 8 2 ... 1 0 206
16 2 9 1 ... NaN 0 0
17 2 9 2 ... 4 0 216
18 2 10 1 ... 2 0 214
19 2 10 2 ... R 0 236
20 2 11 1 ... 4 0 215
21 2 11 2 ... 4 0 217
22 2 12 1 ... 4 0 207
23 2 12 2 ... EJ 0 205
24 2 13 1 ... 4 0 222
25 2 13 2 ... 2 0 223
uj5u.com熱心網友回復:
有沒有辦法讓這更容易,比如如果 ID 是 0,中繼是 2,目標是 1,它會將 det ID 轉換為 21 或類似的東西?那將解決我的問題:)
df.loc[df['ID'] == 0, 'ID'] = \
df[['Relay', 'Target']].astype(str).apply(''.join, axis=1).astype(int)
print(df)
# Output
LeonID Relay Target ... Klasse Fyll ID
0 2 1 1 ... 3 0 210
1 2 1 2 ... NaN 0 12 # HERE
2 2 2 1 ... V55 0 208
3 2 2 2 ... 2 0 211
4 2 3 1 ... V55 0 209
5 2 3 2 ... KIK 0 226
6 2 4 1 ... 4 0 218
7 2 4 2 ... 4 0 212
8 2 5 1 ... NaN 0 51 # HERE
9 2 5 2 ... 2 0 220
10 2 6 1 ... 2 0 213
11 2 6 2 ... 2 0 225
12 2 7 1 ... EJ 0 219
13 2 7 2 ... 2 0 224
14 2 8 1 ... 2 0 221
15 2 8 2 ... 1 0 206
16 2 9 1 ... NaN 0 91 # HERE
17 2 9 2 ... 4 0 216
18 2 10 1 ... 2 0 214
19 2 10 2 ... R 0 236
20 2 11 1 ... 4 0 215
21 2 11 2 ... 4 0 217
22 2 12 1 ... 4 0 207
23 2 12 2 ... EJ 0 205
24 2 13 1 ... 4 0 222
25 2 13 2 ... 2 0 223
uj5u.com熱心網友回復:
創建一個值在 1000-2000 范圍內的系列,然后呼叫它的sample方法得到你想要的。注意,sample方法具有關鍵字引數replace是False默認(其不允許采樣同一行的多于一次)。
mask = df['ID'] == 0
df.loc[mask,'ID'] = pd.Series(range(1000,2000)).sample(mask.sum()).values
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402296.html
標籤:
