DataFrameから、列を抽出する際に、以下の2つの方法があり、どちらかにするか迷ってしまいます。
どちらを、お奨めされるか、そして、その理由のついてお聞かせ頂けると参考になります。
python
1import pandas as pd 2import numpy as np 3 4df=pd.DataFrame({'name1':['a','b','c','d','e'],'name2':['one','two','three','for','five'],'data1':np.random.randn(5),'data2':np.random.randn(5)}) 5 6df
python
1# 方法1: 2df1=df[['name1','data1']] 3df1 4 5# 方法2: 6df2=pd.DataFrame(df,columns=['name1','data1']) 7df2
方法1、方法2ともに、アウトプットは同じになります。
何を悩まれているのですか?
好きな方で、統一したければご自分で決めればよいかと
逆に言うともっと別のやり方もあります
https://pythondatascience.plavox.info/pandas/%E8%A1%8C%E3%83%BB%E5%88%97%E3%81%AE%E6%8A%BD%E5%87%BA
https://note.nkmk.me/python-pandas-index-row-column/
どうしても気になるのであれば自分だけのコーディング規約を作ればいいと思います。
この処理の時はこう書く 的な
コメント、ありがとうございます。
大義名分...というと、いささか大げさですが、他の方は、どんな基準でやってらっしゃるんだろうという...参考にしたいというか...失礼しました。
参考にしたいということなので、こちらに書きます。
方法2はこういう書き方ができるのを初めて知りました。
df = pd.DataFrame(list_or_ndarray, columns=['foo', 'bar'])
という使い方はよくしますが、この場合はカラム名の命名なので、それとこれとで動作が直感的に一致しないので、個人的にはわかりにくいように感じました。
bsdfanさま
コメントありがとうございます〜
方法2の書き方は「pythonによるデータ分析入門」(Wes Mckinney/オライリー・ジャパン)を参考にしました。著者のWes MckinneyはPandasを作った当事者となります。ですが、本質問を通じて、方法1の方がスマートであることを再認識できました。ともすると(少なくとも僕の場合)当事者による書き方にこだわりがちですが、使う側視線で柔軟に選んだ方が良いと思ったりしました〜
回答2件
あなたの回答
tips
プレビュー