2017-10-03 8 views
1

を意味し、私は、単純なデータフレームがあります。はValueErrorをを与える:アイテムの間違った数が2を通過し、配置は1

import pandas as pd 
d = pd.DataFrame({'a':[[1], [2], [3]], 'b': [[4], [5], [6]]}) 
print d 
    a b 
    0 [1] [4] 
    1 [2] [5] 
    2 [3] [6] 

をそして私は、私は、次の

を使用

combined 
0 [1, 4] 
1 [2, 5] 
2 [3, 6] 

を取得したいです

d['combined'] = d.apply(lambda row: row.a + row.b, axis=1) 

、それは私にエラーを与えます

ValueError: Wrong number of items passed 2, placement implies 1 

なぜ

d['combined'] = d.apply(lambda row: row.a[0] + row.b[0], axis=1) 

は(私は必要なものではないが)動作しますが、上記の私のコードはエラーになりますでしょうか?

更新:

は実際に私の元のコードは、より多くのこのような私でした:

d = pd.DataFrame({'a':[[1, 2], [2, 3], [3, 4]], 'b': [[4, 5], [5, 6], [6, 7]]}) 
     a  b 
0 [1, 2] [4, 5] 
1 [2, 3] [5, 6] 
2 [3, 4] [6, 7] 

と私は

 combined 
0 [1, 5] 
1 [2, 6] 
2 [3, 7] 
としてリストにBでの最初の要素と最後の要素を取得したいです

私はちょうど空の文字列で新しい列を作成することができますと、次のいずれかの答えで指摘されているように、それを変更するために適用を使用して、直接列を追加してくれませんflexibiliリストを操作する。

答えて

2

ただ、最初の列と「組み合わせた」空白のシリーズ名を作成する作品なぜ私は知りませんValueError: Wrong number of items passed - Meaning and suggestions?

import pandas as pd 
d = pd.DataFrame({'a':[[1], [2], [3]], 'b': [[4], [5], [6]]}) 
d['combined'] = '' 
d['combined'] = d.apply(lambda row: row.a + row.b, axis=1) 
+0

ありがとうございます、これはうまくいくようです – user3230153

2

あなたはこのために適用使用する必要はありません。

d['c'] = d.a + d.b 

    a b c 
0 [1] [4] [1, 4] 
1 [2] [5] [2, 5] 
2 [3] [6] [3, 6] 
+0

ありがとう!私はそれがこの単純なことを知らなかった。 – user3230153

1

シンプルd.sum(1)

d['combined'] = d.sum(1) 

    a b combined 
0 [1] [4] [1, 4] 
1 [2] [5] [2, 5] 
2 [3] [6] [3, 6] 
+0

ありがとう、私の実際のデータには私は他の列がありますが、この関数は非常に簡単で便利です! – user3230153

関連する問題