2017-08-28 12 views
0

異なるタイプの値を持つ列テーブルを追加することに関する質問があります。 表の長さは10行です。 1月1日、2月2日、3行-1のマーチなど異なる値の列を追加する方法

「手で」すべてを書き込むのではなく、これを可能にする機能はありますか?

ありがとうございます。

+0

0,1,2...)、独特の単調を意味します。 – BEAst

+0

現在のデータセットの例を追加して、最終結果をどのように見せることができますか? [ここにいくつかのガイドラインがあります](https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – Tony

+0

私は私の質問に不明であったと思います。私が意味することは、10行の1列に値が含まれているとしましょう、単位を追加する列を追加したいのですが、最初の3行は "kWh"の単位を持ち、残りの行は "MWh " – BEAst

答えて

2

あなたはヘルパーDataFrameとそれからjoinオリジナルが必要だと思います。

お知らせ:df indexデフォルトで、それはまあ、私はちょうど列のそのタイプを追加したいので、私はそれを文字列になると思い

#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 
関連する問題