使用熊貓我想根據列 DV2 的起始字串用資料(data1、data2 等)填充 DVZ 列,例如,如果以 9 開??頭將 data1 添加到 DVZ 第一個 raw 和第二個如果以 7 開頭將添加 data2 如果以 7 開頭將是 DVZ 中的 data3
我正在嘗試 dew['DVZ'][dew["DV0"].astype('str').str.startswith("9")] = "Sin" 但無法達到期望的結果。感謝有人能提示我
| DV1 | DV2 | DVZ |
|---|---|---|
| 9412 | 941 | 新資料 |
| 9434 | 911 | 新資料 |
| 9412 | 717 | 新資料 |
| 3114 | 311 | 新資料 |
| 6314 | 631 | 新資料 |
| 6622 | 662 | 新資料 |
這里希望結果
| DV1 | DV2 | DVZ |
|---|---|---|
| 9412 | 941 | 資料1 |
| 9434 | 911 | 資料1 |
| 9412 | 717 | 資料2 |
| 3114 | 311 | 資料3 |
| 6314 | 631 | 資料4 |
| 6622 | 662 | 資料4 |
uj5u.com熱心網友回復:
IIUC,您可以使用:
c = df['DV2'].astype(str).str[0]
df['DVZ'] = 'data' c.ne(c.shift()).cumsum().astype(str)
print(df)
# Output
DV1 DV2 DVZ
0 9412 941 data1
1 9434 911 data1
2 9412 717 data2
3 3114 311 data3
4 6314 631 data4
5 6622 662 data4
更新
因為 DV2 以 9 開??頭,所以當以 7 開頭時,我將添加單詞 data1 我將以 4 開頭的 date2 放入 data3 等等。
創建一個映射字典:
M = {'9': 'data1', '7': 'data2', '3': 'data3', '6': 'data4'} # and so on
df['DVZ'] = df['DV2'].astype(str).str[0].map(M)
print(df)
# Output
DV1 DV2 DVZ
0 9412 941 data1
1 9434 911 data1
2 9412 717 data2
3 3114 311 data3
4 6314 631 data4
5 6622 662 data4
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497808.html
