2017-08-28 37 views
0

我對添加具有不同類型值的列表有疑問: 該表的長度是10行。第一個給出1月1日,2月第二排1,3月3日-1等。如何添加具有不同值的列

是否有一個功能,而不是寫一切「手工」。

在此先感謝。

+0

好吧,我只是想補充一點,類型列的,所以我想這將是一個字符串。 – BEAst

+0

您可以添加一個當前數據集的示例,並且希望最終結果看起來像什麼? [這裏有一些指導](https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – Tony

+0

我想我不清楚我的問題。我的意思是說,一列10行包含值,我想添加額外的列與單位,但是彼此不同,所以前3行的單位是「千瓦時」,其餘的行有「兆瓦時「 – BEAst

回答

2

我認爲你需要幫手DataFrame然後join列爲原創。

聲明:中df index是默認的,這意味着唯一,單調(0,1,2...

#create date range longer as max length of original df 
df1 = pd.DataFrame({'rng': pd.date_range('2016-01-01', periods=1000)}) 
#convert to string and remove trailing 0 
df1['new'] = df1['rng'].dt.strftime('%d of %B').str.lstrip('0') 
#extract year, month, days 
df1 = df1.assign(year=df1['rng'].dt.year,month=df1['rng'].dt.month, day=df1['rng'].dt.day) 
#sorting and create default index (0,1,2) 
df1 = df1.sort_values(['year','day','month']).reset_index(drop=True) 

print (df1.head()) 
     rng   new day month year 
0 2016-01-01 1 of January 1  1 2016 
1 2016-02-01 1 of February 1  2 2016 
2 2016-03-01  1 of March 1  3 2016 
3 2016-04-01  1 of April 1  4 2016 
4 2016-05-01  1 of May 1  5 2016 

df = pd.DataFrame({'A':list('abcdef'), 
        'B':[4,5,4,5,5,4]}) 

df = df.join(df1['new']) 
print(df) 
    A B   new 
0 a 4 1 of January 
1 b 5 1 of February 
2 c 4  1 of March 
3 d 5  1 of April 
4 e 5  1 of May 
5 f 4  1 of June