Dive into hoge

データ分析関連の備忘録

pandas操作②:arrayから変換、カラム名をコピーから作成

よく忘れるので備忘2。

arrayをDataFrameに変換したいとき

単純にDataFrameにつっこむだけ。

import numpy as np
import pandas as pd

a = np.array([[1,2,3],
              [4,5,6]])
df_a = pd.DataFrame(a)

一応記載すると、df_aは下記のようになる

	0	1	2
0	1	2	3
1	4	5	6

カラムを別のDataFrameからコピーしてきたい

カラムとインデックスがないので寂しい。大抵のブログ記事ではここで自分でカラム名を入力したりするが、実際にそんなことやらない。何かを流用したりするだろう、普通。というか私がやりたい。だが記載がないので下記で色々やってみる。まずコピー元のDataFrameを作ってみる。

df_b = pd.DataFrame({'A':[7,10],
                     'B':[8,11],
                     'C':[9,12]},
                   index = ['customer1','customer2'])

df_bのカラム名をdf_aにコピーしたいとき(インデックスがことなるので値を変えるのでなくカラム名だけ欲しいときとか)。素朴に下記でどうだろう?

df_a.rename(columns=df_b.columns)

下記エラーがでます。

TypeError: 'Index' object is not callable

では何を受け付けるのかと、ヘルプを見てみると"index, columns : scalar, list-like, dict-like or function"とあるので下記。

df_a.rename(columns=list(df_b.columns))

"TypeError: 'list' object is not callable"のエラーがでる。リスト受け付けるんじゃないの? list-likeだからリストそのものはダメなの? そこでふと思ったが、もっと素朴に下記はどうだろうか?

df_a.columns = df_b.columns

# 下記は出力
	A	B	C
0	1	2	3
1	4	5	6

うまくいった。なんだこれでよかったのか。。