我有这样的数据:
Charge 1 Charge 2
observation_date
1970-01-31 35.535318 0.073390
1970-02-28 27.685739 0.050302
...
2013-01-31 27.671290 0.296882
2013-02-28 26.647262 0.225714
2013-03-31 21.495699 0.362151
如何重新索引数据(observation_date),以便所有年份都成为2013年?
所以1970-01-31成为2013-01-31等等。据我所知,索引会有很多次相同。
答案 0 :(得分:2)
import pandas as pd
df = pd.read_table('data', sep='\s{2,}').set_index('observation_date')
df.index = pd.DatetimeIndex(df.index)
df.index = df.index + pd.DateOffset(year=2013)
print(df)
产量
Charge 1 Charge 2
2013-01-31 35.535318 0.073390
2013-02-28 27.685739 0.050302
2013-01-31 27.671290 0.296882
2013-02-28 26.647262 0.225714
2013-03-31 21.495699 0.362151
答案 1 :(得分:0)
我会写一个更新年份的函数。 我将在这里通过一个简单的例子。
import pandas as pd
df = pd.DataFrame({'observation_date':["1970-01-31","1970-02-31","1970-04-31"]})
l= df.observation_date
def updateYear(x):
n= x.split("-")
n[0]="2013" #We replace the year data, which is the first value by 2013
return "-".join(n)
print updateYear("1970-01-31")
df['b']= df["observation_date"].apply(lambda x:updateYear(str(x)))
print df
输出::
observation_date b
0 1970-01-31 2013-01-31
1 1970-02-31 2013-02-31
2 1970-04-31 2013-04-31
在你的情况下:
df= pd.read_csv(name)
df.index = df.index.apply(lambda x:updateYear(str(x)))
答案 2 :(得分:-1)
不确定我是否理解您的问题,但您可以搜索1970年开始的年份并替换为2013
例如。
new_date = re.sub('1970','2013',observation_date)