1. ホーム
  2. python

[解決済み] Python pandasによるセルへのリストの挿入

2022-05-16 16:07:16

質問

リスト'abc'とデータフレーム'df'を持っています。

abc = ['foo', 'bar']
df =
    A  B
0  12  NaN
1  23  NaN

セル1Bにリストを挿入したいので、このような結果にしたい。

    A  B
0  12  NaN
1  23  ['foo', 'bar']

どうすればいいんですか?

1) これを使うと

df.ix[1,'B'] = abc

以下のようなエラーメッセージが表示されます。

ValueError: Must have equal len keys and value when setting with an iterable

というのは、リスト(2つの要素を持つ)を行/列に挿入しようとするが、セルに挿入しようとしないからです。

2)私がこれを使用する場合。

df.ix[1,'B'] = [abc]

とすると、'abc' リストである1つの要素だけを持つリストが挿入されます ( [['foo', 'bar']] ).

3) これを使うと

df.ix[1,'B'] = ', '.join(abc)

という文字列を挿入します。 foo, bar ) を挿入しますが、リストではありません。

4) これを使うと

df.ix[1,'B'] = [', '.join(abc)]

と入力すると、リストが挿入されますが、要素は1つだけです ( ['foo, bar'] ) だけであり、私が欲しいのは二つではありません ( ['foo', 'bar'] ).

助けてくれてありがとうございます


編集

新しいデータフレームと古いリストです。

abc = ['foo', 'bar']
df2 =
    A    B         C
0  12  NaN      'bla'
1  23  NaN  'bla bla'

別のデータフレームです。

df3 =
    A    B         C                    D
0  12  NaN      'bla'  ['item1', 'item2']
1  23  NaN  'bla bla'        [11, 12, 13]

abc' のリストを df2.loc[1,'B']df3.loc[1,'B'] .

データフレームが整数値、NaN値、リスト値のみの列を持つ場合、セルへのリストの挿入は完璧に動作します。データフレームが文字列値および/またはNaN値および/またはリスト値のみを持つ列を持っている場合、セルへのリストの挿入は完全に動作します。しかし、データフレームが整数値と文字列値と他の列を持つ場合、私はこれを使用すると、エラーメッセージが表示されます。 df2.loc[1,'B'] = abc または df3.loc[1,'B'] = abc .

別のデータフレームです。

df4 =
          A     B
0      'bla'  NaN
1  'bla bla'  NaN

これらの挿入は完全に動作します。 df.loc[1,'B'] = abc または df4.loc[1,'B'] = abc .

どのように解決するのですか?

df3.set_value(1, 'B', abc) はどのようなデータフレームでも動作します。B'列のデータ型に注意してください。例えば、リストは float カラムに挿入することはできませんが、その場合は df['B'] = df['B'].astype(object) が役に立ちます。