2017-01-26 10 views
1

私はついにSPSSの束縛から解放され、PandasとPythonの自由に夢中になりました。しかし、私はPython Lambda関数がPandasでどのようにやりとりするかをより明確に理解しようとしています。それは多くのポップアップのようです。ここでは、私は暗闇をクリアすることを望む例です。 Python上での明確化/想起PandasのLamba関数

文字列分割から新しいデータフレームを作成した後:

bs = fh['basis'].str.split(',',expand = True) 

私は数字のヘッダに「b」を追加することにより、すべての変数の名前を変更したいです。これは動作します:

しかし、私はラムダ関数が良いだろうかと疑っています。

bs.rename(columns=lambda x: x = 'b' + str(x), inplace=True) 

私はラムダ関数を務めたと思ったので、私は列ヘッダを渡す場合、私はそれに「b」を追加することができます。しかし、これは動作しません。しかし、 "="はエラーを投げます。どんな速い観察も非常に高く評価されるだろう。 乾杯!

+0

を'bs.columns = 'b' + bs.columns.astype(str)' – EdChum

+0

ああ、それは良い解決策です。私はあなたがそのようなすべての列にアクセスできるかどうかはわかりませんでした。スーパーヘルプ - それを指摘してくれてありがとう! –

答えて

6

私はadd_prefix()使用したい:あなたは行っている可能性

In [5]: bs = pd.DataFrame(np.random.rand(3,5)) 

In [6]: bs 
Out[6]: 
      0   1   2   3   4 
0 0.521593 0.088293 0.623103 0.099417 0.983149 
1 0.009741 0.465654 0.414261 0.024086 0.039543 
2 0.476219 0.918162 0.900815 0.126549 0.112388 

In [7]: bs.add_prefix('b') 
Out[7]: 
     b0  b1  b2  b3  b4 
0 0.521593 0.088293 0.623103 0.099417 0.983149 
1 0.009741 0.465654 0.414261 0.024086 0.039543 
2 0.476219 0.918162 0.900815 0.126549 0.112388 
+1

このメソッドは決して見つかりませんでした+1の前に – EdChum

1

Ahhhh!もちろん私はそれを私がそれを提出することができるbeofreを考え出した。

bs.rename(columns=lambda x: 'b' + str(x), inplace=True) 

もちろん答えです。等号は冗長で、 ":"の後ろには関数が返すか "等しくなる"かどうかは関係ありません。それは正しい考えですか?

+0

それは正しいです。しかし、この特定の例のためのより良いオプションがあります: 'bs.add_prefix( 'b')' ;-) – MaxU

+0

@MaxUはそのメソッドを以前に見つけたことがありません – EdChum

+0

@EdChum、例を追加しました... – MaxU

5

あなただけastypeを使用してstrに鋳造後'b'に列を追加することにより、さらに簡単にこれをやったことができます:

In [2]: 
df = pd.DataFrame(columns=np.arange(5)) 
df 

Out[2]: 
Empty DataFrame 
Columns: [0, 1, 2, 3, 4] 
Index: [] 

In [4]: 
df.columns = 'b' + df.columns.astype(str) 
df.columns 

Out[4]: 
Index(['b0', 'b1', 'b2', 'b3', 'b4'], dtype='object') 
関連する問題