Python Pandasデータフレームdf:
d=[['hello',1,'GOOD','long.kw'],
[1.2,'chipotle',np.nan,'bingo'],
['various',np.nan,3000,123.456]]
t=pd.DataFrame(data=d, columns=['A','B','C','D'])
次のようになります:
print(t)
A B C D
0 hello 1 GOOD long.kw
1 1.2 chipotle NaN bingo
2 various NaN 3000 123.456
list
、A
、B
、およびC
の値のD
である新しい列を作成しようとしています。したがって、次のようになります。
t['combined']
Out[125]:
0 [hello, 1, GOOD, long.kw]
1 [1.2, chipotle, nan, bingo]
2 [various, nan, 3000, 123.456]
Name: combined, dtype: object
私はこのコードを試しています:
t['combined'] = t.apply(lambda x: list([x['A'],
x['B'],
x['C'],
x['D']]),axis=1)
これはこのエラーを返します:
ValueError: Wrong number of items passed 4, placement implies 1
私が困惑しているのは、リストに追加したい列の1つを削除する(または、リストに追加しないデータフレームに別の列を追加する)と、コードが機能することです。
たとえば、次のコードを実行します。
t['combined'] = t.apply(lambda x: list([x['A'],
x['B'],
x['D']]),axis=1)
3列のみが必要な場合に最適なこれを返します。
print(t)
A B C D combined
0 hello 1 GOOD long.kw [hello, 1, long.kw]
1 1.2 chipotle NaN bingo [1.2, chipotle, bingo]
2 various NaN 3000 123.456 [various, nan, 123.456]
データフレーム内のすべての列で「結合」リストを作成するように要求するとエラーが発生するが、「結合」リストを作成するために1列を除くすべてを選択すると、リストが期待どおりに作成される理由が完全に失われています。
これを試して :
t['combined']= t.values.tolist()
t
Out[50]:
A B C D combined
0 hello 1 GOOD long.kw [hello, 1, GOOD, long.kw]
1 1.20 chipotle NaN bingo [1.2, chipotle, nan, bingo]
2 various NaN 3000 123.46 [various, nan, 3000, 123.456]