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