2017-03-27 12 views
1

ルールに従ってPandasの列の名前を変更しようとしています。それらはもともとExcelの文書でマージされたセルでした。ファイルをpandasにインポートしましたが、いくつかの列には名前が付けられていません。私は彼らの名前の左側にある欄に名前を変更したいと思います。例えば。Pandasのルールベースの列の名前変更

'ID' 'Name' 'Volts' 'Unnamed: 4' 'Upstream' 'Unnamed: 6' 'Unnamed: 7' 'Unnamed: 8'

は、私はすべての無名の列がその左への最後のタイトルを取るように、自動化された方法では、上流にボルト4、および6 7および8の名前を変更したいです。これは可能ですか?

ありがとうございます。

+4

ユニークでないインデックスを持つことはお勧めできません。これは、列を選択する際に問題につながります。あなたはこれをすることができますが、私はそれに対して助言します。 – EdChum

+0

私は計画の2番目の部分を追加したほうがよいでしょう。事実、「タイトル」は実際には4行のExcelに分割されていますので、上流に物理的な問題、上流の財政問題などの固有の識別子があります。 forは、これらのタイトルを列ごとに1つにマージしてユニークなインデックスを作成する方法であるため、完全なタイトルは「Upstream Physical Issue」になります。私はこれが最初のステップだと思った、おそらく私は間違った点から始めているのだろうか? –

答えて

3

エドのアドバイスに従ってください。つまり、あなたの問題に対処できる可能性があります。

s = df.columns.to_series() 

s 
Out[27]: 
ID     ID 
Name    Name 
Volts   Volts 
Unnamed:4 Unnamed:4 
Upstream  Upstream 
Unnamed:6 Unnamed:6 
Unnamed:7 Unnamed:7 
Unnamed:8 Unnamed:8 
dtype: object 

s[df.columns.str.contains('Unnamed')] = np.nan 

s.ffill() 
Out[29]: 
ID     ID 
Name    Name 
Volts   Volts 
Unnamed:4  Volts 
Upstream  Upstream 
Unnamed:6 Upstream 
Unnamed:7 Upstream 
Unnamed:8 Upstream 
dtype: object 

df.columns = s.ffill() 

df 
Out[31]: 
Empty DataFrame 
Columns: [ID, Name, Volts, Volts, Upstream, Upstream, Upstream, Upstream] 
Index: [] 
関連する問題