迭代DF列的行并根据条件更改值

2024-05-12 16:05:41 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是数据框中的一列:

Year
1981
1988
-1
1921
2000
-1

我需要从2020年开始将这些年(其中带-1的行除外)转换为天

我写过: df['Year'] = 2020 - df['Year']*365

在不考虑-1值的情况下,如何将这些年转换为天-我需要保持现状。我只需要换算年份


Tags: 数据df情况year年份现状
2条回答

给你:

import numpy as np
df['Year'] = np.where(df.Year != -1, (2020 - df.Year) * 365, -1)
print(df)

输出

    Year
0  14235
1  11680
2     -1
3  36135
4   7300
5     -1

你想要什么样的

df.loc[df['Year'] != -1, 'Year'] = (2020-df.loc[df['Year'] != -1, 'Year'])*365

输出:

    Year
0  14235
1  11680
2     -1
3  36135
4   7300
5     -1

另一种方式:

df = df.assign(Year=((2020-df.loc[df['Year'] != -1])*365)).fillna(-1)
df

输出:

      Year
0  14235.0
1  11680.0
2     -1.0
3  36135.0
4   7300.0
5     -1.0

第三条道路:

df['Year'] = ((2020 - df['Year'])*365).mask(df['Year']==-1, -1)

输出:

    Year
0  14235
1  11680
2     -1
3  36135
4   7300
5     -1

相关问题 更多 >