簡體   English   中英

使用基於數據框年份的值向數據框添加新列

[英]Adding new column to data frame with values based on years of data frame

我有一個 dataframe

import pandas_datareader as webreader
import math 
import numpy as np 
import pandas as pd 
from datetime import date, timedelta, datetime
from pandas.plotting import register_matplotlib_converters
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates
from sklearn.metrics import mean_absolute_error, mean_squared_error
from keras.models import Sequential 
from keras.layers import LSTM, Dense, Dropout
from keras.callbacks import EarlyStopping
from sklearn.preprocessing import RobustScaler

stockname = 'INFOSYS'
symbol = 'INFY.NS'
df = webreader.DataReader(symbol, start=date_start, end=date_today, data_source="yahoo")
print(df)

Output 是,

在此處輸入圖像描述

我想在 dataframe 中添加列“deb/eq”,並且我想添加特定於年份的值。

例如。

for all dates in 2020 - all deb/eq values to be 0.00
for all dates in 2019 - all deb/eq values to be 1.00
for all dates in 2018 and previous - all deb/eq values to be 2.00

如何根據數據幀年份向 dataframe 添加新列和值?

使用Index.map並通過Index.fillna將不匹配的值( NaN s)設置為2.0

df['deb/eq'] = df.index.year.map({2020:0.0, 2019:1.0}).fillna(2.0)

使用numpy.select

y = df.index.year
df['deb/eq'] = np.select([y == 2020, y == 2019], [0.0, 1.0], default=2.0)

編輯:

df = pd.DataFrame(index=pd.date_range('2003', '2021', freq='A'))

df['ATR'] = df.index.year.map({2021:91.45, 2020:97.53, 2019:92.62, 2018:81.83, 2017:74.21, 2016:74.22, 2015:76.52, 2014:84.11, 2013:85.44, 2012:87.26, 2011:87.97, 2010:81.10, 2009:95.80, 2008:90.86, 2007:101.25, 2006:99.05, 2005:104.12, 2004:92.67}).fillna(0.0)
print (df)
               ATR
2003-12-31    0.00
2004-12-31   92.67
2005-12-31  104.12
2006-12-31   99.05
2007-12-31  101.25
2008-12-31   90.86
2009-12-31   95.80
2010-12-31   81.10
2011-12-31   87.97
2012-12-31   87.26
2013-12-31   85.44
2014-12-31   84.11
2015-12-31   76.52
2016-12-31   74.22
2017-12-31   74.21
2018-12-31   81.83
2019-12-31   92.62
2020-12-31   97.53

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM