2017-10-18 9 views
0

私はもともとr個のcsvファイルを持っています。特定の列の番号をstr + numberの名前に変更します

私は9つの列を持つ1つのデータフレームを作成し、そのうちのr個はヘッダーとして数字を持っています。

私はそれらを対象にして、名前を[Apple] + range(len(files))に変更したいと思います。

例: 私は3つのcsvファイルを持っています。

私のデータフレーム内の現在の3対象のカラムは以下のとおりです。私は希望

  0  1  2 
0  444.0 286.0 657.0 
1  2103.0 2317.0 2577.0 
2  157.0 200.0 161.0 
3  4000.0 3363.0 4986.0 
4  1042.0 541.0 872.0 
5  1607.0 1294.0 3305.0 

 Apple1 Apple2 Apple3 
0  444.0 286.0 657.0 
1  2103.0 2317.0 2577.0 
2  157.0 200.0 161.0 
3  4000.0 3363.0 4986.0 
4  1042.0 541.0 872.0 
5  1607.0 1294.0 3305.0 

答えて

1

IIUCありがとう、あなたはitertools.countオブジェクトを初期化して、列をリセットすることができますリストの理解で

from itertools import count 

cnt = count(1) 
df.columns = ['Apple{}'.format(next(cnt)) if 
     str(x).isdigit() else x for x in df.columns] 

数字が連続していないが、あなたは彼らが連続した接尾辞で名前を変更したい場合、これがまた非常にうまく動作します。

print(df) 
     1 Col1  5 Col2  500 
0 1240.0 552.0 1238.0 52.0 1370.0 
1 633.0 435.0 177.0 2201.0 185.0 
2 1518.0 936.0 385.0 288.0 427.0 
3 212.0 660.0 320.0 438.0 1403.0 
4 15.0 556.0 501.0 1259.0 1298.0 
5 177.0 718.0 1420.0 833.0 984.0 

cnt = count(1) 
df.columns = ['Apple{}'.format(next(cnt)) if 
     str(x).isdigit() else x for x in df.columns] 

print(df) 
    Apple1 Col1 Apple2 Col2 Apple3 
0 1240.0 552.0 1238.0 52.0 1370.0 
1 633.0 435.0 177.0 2201.0 185.0 
2 1518.0 936.0 385.0 288.0 427.0 
3 212.0 660.0 320.0 438.0 1403.0 
4 15.0 556.0 501.0 1259.0 1298.0 
5 177.0 718.0 1420.0 833.0 984.0 
0

あなたはrename_axisを使用することができます。

df.rename_axis(lambda x: 'Apple{}'.format(int(x)+1) if str(x).isdigit() else x, axis="columns") 
Out[9]: 
    Apple1 Apple2 Apple3 
0 444.0 286.0 657.0 
1 2103.0 2317.0 2577.0 
2 157.0 200.0 161.0 
3 4000.0 3363.0 4986.0 
4 1042.0 541.0 872.0 
5 1607.0 1294.0 3305.0 
関連する問題