通过选择 Pandas 中的其他列来更新条件列值
Posted
技术标签:
【中文标题】通过选择 Pandas 中的其他列来更新条件列值【英文标题】:Update the columns values on condition by selecting other column in Pandas 【发布时间】:2020-12-12 22:40:14 【问题描述】:我想用特定国家的最早日期更新日期列。例如,在法国国家日期列的所有行中,我想要 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
【问题讨论】:
【参考方案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
【讨论】:
法国日期列的所有行都应该有最小日期。但是这里法国的不同行有不同的日期,不是最小的【参考方案2】: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])
【讨论】:
AttributeError: 'Series' 对象没有属性 'date' 对不起,我假设国家和日期是您数据框中的列。查看我的编辑,并将索引(括号中带有字符串)替换为您的列名。 请在您的代码示例中添加说明以改进此答案。以上是关于通过选择 Pandas 中的其他列来更新条件列值的主要内容,如果未能解决你的问题,请参考以下文章