通过在Pandas中选择其他列来根据条件更新列值

时间:2020-08-24 09:45:40

标签: python pandas numpy jupyter-notebook

我想用特定国家的最早日期更新日期列。例如,在法国国家的“日期”列的所有行中,我想要16/03/2020,这是法国最早的。如何更新特定行的值以保持法国不变?

85  China   23/01/2020
111 France  NaN
112 France  27/03/2020
113 France  NaN
114 France  20/03/2020
115 France  NaN
116 France  NaN
117 France  NaN
118 France  NaN
119 France  NaN
120 France  16/03/2020
139 Iran    15/03/2020
143 Italy   11/03/2020
217 Spain   14/03/2020

2 个答案:

答案 0 :(得分:1)

您可以使用groupbytransformmin

df["Date"] = pd.to_datetime(df["Date"], format="%d/%m/%Y")
df["Date"] = df.groupby("Country")["Date"].transform("min")

print (df)

     id Country       Date
0    85   China 2020-01-23
1   111  France 2020-03-16
2   112  France 2020-03-16
3   113  France 2020-03-16
4   114  France 2020-03-16
5   115  France 2020-03-16
6   116  France 2020-03-16
7   117  France 2020-03-16
8   118  France 2020-03-16
9   119  France 2020-03-16
10  120  France 2020-03-16
11  139    Iran 2020-03-15
12  143   Italy 2020-03-11
13  217   Spain 2020-03-14

答案 1 :(得分:0)

country_earliest_dt_dct = df.groupby('country').apply(lambda x: x.min())['date'].to_dict()
df['date'] = df['country'].apply(lambda x: country_earliest_dt_dct[x])
相关问题