以下是数据框中的一列:
Year
1981
1988
-1
1921
2000
-1
我需要将这些年份(其中有-1的行除外)转换为2020年以后的天。
我写了:
df['Year'] = 2020 - df['Year']*365
如何将这些年转换为几天而不考虑-1值。 -1需要保持原样。我只需要转换年份。
答案 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