下面是一个例子:
| 国家/地区|年份|日期|
| - -|- -|- -|
| 西班牙Name|小行星2020| 2020年8月10日|
| 德国|小行星2020| 2020年8月10日|
| 意大利|二〇一九年|2020年8月11日|
| 西班牙Name|二〇一九年|2020年8月20日|
| 西班牙Name|小行星2020| 2020年6月10日|
我想添加一个新列,如果是某个国家一年中的第一天,则给出1,如果不是第一天,则给出0。
我试着写一个函数,但我意识到它实际上没有意义。
def first_date(x, country, year):
if df["date"] == df[(df["country"] == country) & (df["year"] == year)]["date"].min():
x==1
else:
x==0
`
1条答案
按热度按时间py49o6xq1#
有很多方法可以实现这一点。让我们创建一个
groupby
对象来获取每个国家的最小索引,这样我们就可以使用.loc
进行一些赋值顺便说一句,将
if
与panda一起使用通常是一种反模式--panda中有一些原生函数,可以帮助您在利用引擎盖下的矢量化代码库的同时实现同样的功能。推荐阅读:https://pandas.pydata.org/docs/user_guide/10min.html
或将
np.where
与df.index.isin
结合使用