2017-10-28 20 views
1

私がしたいことは非常に簡単なはずです。基本的に、私はいくつかのデータフレームを持っている、私はいくつかのタプル値をいくつかの列に割り当てる必要があります。例えばタプルの値をpandasデータフレームに設定するにはどうすればよいですか?

pd_tmp = pd.DataFrame(np.random.rand(3,3)) 
pd_tmp["new_column"] = ("a",2) 

私はちょうど私が何をすべき、タプル値と新しい列を必要ですか?

ValueError: Length of values does not match length of index 

上記のコードでエラーが発生します。

答えて

5

あなたはリストにタプルをラップすることができます

import pandas as pd 
pd_tmp = pd.DataFrame(np.random.rand(3,3)) 
pd_tmp["new_column"] = [("a",2)] * len(pd_tmp) 

pd_tmp 
#   0   1   2 new_column 
#0 0.835350 0.338516 0.914184 (a, 2) 
#1 0.007327 0.418952 0.741958 (a, 2) 
#2 0.758607 0.464525 0.400847 (a, 2) 
+1

ファンタスティック!!!!!!!!を返しlambdaapplyを使用することができます – user40780

1

seriesのドキュメント。

シリーズは、任意のデータ タイプ(整数、文字列、浮動小数点数、Pythonオブジェクト、 等)を保持することが可能な一次元標識配列です。軸ラベルはまとめてインデックスと呼ばれます。シリーズを作成するための 基本的な方法を呼び出すことです:

>>> s = pd.Series(data, index=index) 

ここで、データは多くの異なるものになります

  • Pythonの辞書
  • ndarray
  • スカラー値(のような5)

do Seriesはタプル型を直接取ることはありません。
@ Psidomの回答は、タプルをndarrayの要素として作ることです。

set a cell of Series/Dataframeについて質問する場合は、尋ねられる質問です。

2

あなたはtuple

pd_tmp.assign(newc_olumn=pd_tmp.apply(lambda x: ('a', 2), 1)) 

      0   1   2 newc_olumn 
0 0.373564 0.806956 0.106911  (a, 2) 
1 0.332508 0.711735 0.230347  (a, 2) 
2 0.516232 0.343266 0.813759  (a, 2) 
関連する問題