[英]Replace one column of a dataframe's values with another
我正在使用這樣的表:唯一 ID 可能有 1 個條目,或者它們可能有很多條目。
ID | 開始 | 停止 | 天 |
---|---|---|---|
101 | 2021 年 1 月 1 日 | 2021 年 1 月 31 日 | 270 |
101 | 2020 年 2 月 1 日 | 2020 年 3 月 31 日 | 270 |
102 | 2021 年 1 月 1 日 | 2020 年 3 月 29 日 | 208 |
102 | 2020 年 3 月 30 日 | 2020 年 3 月 31 日 | 208 |
103 | 2020 年 1 月 1 日 | 2020 年 3 月 31 日 | 210 |
104 | 2020 年 1 月 1 日 | 2020 年 1 月 2 日 | 130 |
104 | 2020 年 1 月 3 日 | 2020 年 3 月 31 日 | 130 |
105 | 2020 年 1 月 1 日 | 2020 年 3 月 31 日 | 160 |
我需要根據另一個 dataframe 替換天數列中的數字,它為每個 ID 提供了一個新的天數。 這個 dataframe 看起來像:
ID | 天 |
---|---|
101 | 290 |
102 | 250 |
103 | 215 |
104 | 180 |
105 | 175 |
如何將第一個 dataframe 中的天數列替換為第二個 dataframe 中每個 ID 的天數信息? 我的最終結果應該是這樣的:
ID | 開始 | 停止 | 天 |
---|---|---|---|
101 | 2021 年 1 月 1 日 | 2021 年 1 月 31 日 | 290 |
101 | 2020 年 2 月 1 日 | 2020 年 3 月 31 日 | 290 |
102 | 2021 年 1 月 1 日 | 2020 年 3 月 29 日 | 250 |
102 | 2020 年 3 月 30 日 | 2020 年 3 月 31 日 | 250 |
103 | 2020 年 1 月 1 日 | 2020 年 3 月 31 日 | 215 |
104 | 2020 年 1 月 1 日 | 2020 年 1 月 2 日 | 180 |
104 | 2020 年 1 月 3 日 | 2020 年 3 月 31 日 | 180 |
105 | 2020 年 1 月 1 日 | 2020 年 3 月 31 日 | 175 |
我嘗試了 df.update 並將第二個 dataframe 轉換為字典並 using.map 但沒有成功。 任何幫助將不勝感激!
謝謝,
肖恩
你可以試試這個:
df_1.drop(columns=Days, inplace=True)
final = pd.merge(df1, df2, on='ID')
final.head()
df_1["Days"] = pd.merge(df_1, df_2, on="ID")["Days_y"]
print(df_1)
印刷:
ID Start Stop Days
0 101 1/1/2021 1/31/2021 290
1 101 2/1/2020 3/31/2020 290
2 102 1/1/2021 3/29/2020 250
3 102 3/30/2020 3/31/2020 250
4 103 1/1/2020 3/31/2020 215
5 104 1/1/2020 1/2/2020 180
6 104 1/3/2020 3/31/2020 180
7 105 1/1/2020 3/31/2020 175
您還可以將第一個 df 的ID
與第二個 df 的Days
map()
:
df1.Days = df1.ID.map(df2.set_index('ID').Days)
# Start Stop Days
# ID
# 101 1/1/2021 1/31/2021 290
# 101 2/1/2020 3/31/2020 290
# 102 1/1/2021 3/29/2020 250
# 102 3/30/2020 3/31/2020 250
# 103 1/1/2020 3/31/2020 215
# 104 1/1/2020 1/2/2020 180
# 104 1/3/2020 3/31/2020 180
# 105 1/1/2020 3/31/2020 175
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.