簡體   English   中英

用另一列替換數據框值的一列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM