我想用特定国家的最早日期更新日期列。例如,在法国国家的“日期”列的所有行中,我想要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
答案 0 :(得分:1)
您可以使用groupby
值transform
和min
:
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])