2017-01-06 11 views
2

非常に基本的な質問:名前を持つ20個の列を取得する場合、pandasデータフレームの列名を生成する最も簡単な方法(最小コード)は何ですか:s1、s2、s3 、...、s20?文字列と数値を含む列名を生成する

+1

list comprehension: '['' '(x)for str(x)for range(1,21)]'これを 'DataFrame'コードに渡すか、列を上書きすることができます:' df.columns = column_list ' – EdChum

+0

あなたは列リストを意味しています、' ['%s'%xは範囲(1,21)のxに対して '? – Zero

答えて

2

あなたは、列名を生成するために、リスト内包表記を使用することができます。

In [70]: 
df = pd.DataFrame(np.random.randn(5,20), columns=col_list) 
df.columns 

Out[70]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 

それともcolumnsを上書きする:あなたはDataFrame ctorの中column引数としてこれを渡すことができますいずれか

In [66]: 
col_list = ['s' + str(x) for x in range(1,21)] 
col_list 

Out[66]: 
['s1', 
's2', 
's3', 
's4', 
's5', 
's6', 
's7', 
's8', 
's9', 
's10', 
's11', 
's12', 
's13', 
's14', 
's15', 
's16', 
's17', 
's18', 
's19', 
's20'] 

れた後、属性を直接割り当てて:

In [71]: 
df = pd.DataFrame(np.random.randn(5,20)) 
df.columns = col_list 
df.columns 

Out[71]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 

またrename使用したり、rename_axisが、彼らはすでにそこにあるため、既存の列名を上書きするためにしていることができます。また、範囲から作成されたシリーズにプレフィックスを追加することができますpost

関連:

In [76]: 
col_list = 's' + pd.Series(np.arange(1,21)).astype(str) 
df.columns= col_list 
df.columns 

Out[76]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 
関連する問題