遍历DF列的行并根据条件更改值

时间:2020-07-22 17:45:32

标签: python pandas dataframe

以下是数据框中的一列:

Year
1981
1988
-1
1921
2000
-1

我需要将这些年份(其中有-1的行除外)转换为2020年以后的天。

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

如何将这些年转换为几天而不考虑-1值。 -1需要保持原样。我只需要转换年份。

2 个答案:

答案 0 :(得分:1)

Ddi您想要类似的东西吗?

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

答案 1 :(得分:1)

您在这里:

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