您好我需要根據字典更新 DataFrame 中的特定列。我最初的 DataFrame 是這樣的
| 日期 | 變數_1 | Var_2 | Var_3 | Var_4 |
|---|---|---|---|---|
| 2022 年 1 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 2 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 3 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 4 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 5 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 6 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 7 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 8 月 1 日 | 100 | 不 | 是的 | 104 |
我的嵌套字典是這個(基于我需要更新這個資料框)
my_dict = {
"01/01/2022" : { "Var_2": "Yes","Var_3": "No"},
"02/01/2022" : { "Var_2": "Yes","Var_3": "No"},
"03/01/2022" : { "Var_2": "Yes","Var_3": "Yes"},
"05/01/2022" : { "Var_2": "No", "Var_3": "Yes"},
"06/01/2022" : { "Var_2": "No", "Var_3": "Yes"}
}
我想要的輸出是
| 日期 | 變數_1 | Var_2 | Var_3 | Var_4 |
|---|---|---|---|---|
| 2022 年 1 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 2 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 3 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 4 月 1 日 | 100 | 是的 | 是的 | 104 |
| 2022 年 5 月 1 日 | 100 | 不 | 是的 | 104 |
| 2022 年 6 月 1 日 | 100 | 不 | 是的 | 104 |
| 2022 年 7 月 1 日 | 100 | 是的 | 不 | 104 |
| 2022 年 8 月 1 日 | 100 | 不 | 是的 | 104 |
嘗試過,.replace(my_dict)但沒有成功。
uj5u.com熱心網友回復:
一種選擇是轉換my_dict為 DataFrame 并df使用它進行更新:
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')
tmp = pd.DataFrame.from_dict(my_dict, orient='index')
tmp.index = pd.to_datetime(tmp.index)
df.update(tmp)
df = df.reset_index()
或使用combine_first:
tmp = pd.DataFrame.from_dict(my_dict, orient='index')
tmp.index = pd.to_datetime(tmp.index)
df = tmp.combine_first(df.set_index('Date')).reset_index().rename(columns={'index':'Date'})
輸出:
Date Var_1 Var_2 Var_3 Var_4
0 01/01/2022 100 Yes No 104
1 02/01/2022 100 Yes No 104
2 03/01/2022 100 Yes Yes 104
3 04/01/2022 100 Yes Yes 104
4 05/01/2022 100 No Yes 104
5 06/01/2022 100 No Yes 104
6 07/01/2022 100 Yes No 104
7 08/01/2022 100 No Yes 104
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444927.html
上一篇:按ID創建具有多個唯一值的變數
