データフレームを操作する場合、多くの場合、個々のデータフレームのコンテンツを調整する必要があります。細胞。この場合のタスクは、特定のリスト「abc」をデータフレームのセル 1B に挿入することです。さまざまな試みが行われてきましたが、それぞれ独自の課題に直面しました。
当初、df.ix[1,'B'] = abc を使用してリスト全体をセルに直接割り当てようとすると、ValueError が発生しました。キーと値の数の不一致が原因です。代わりに df.ix[1,'B'] = [abc] を使用すると、'abc' リストを唯一の要素として含むリストが作成されますが、これは望ましくありません。
df を使用してリストを文字列に変換します。 ix[1,'B'] = ', '.join(abc) は、目的のコンテンツをリストではなく文字列として生成します。同様に、 df.ix[1,'B'] = [', '.join(abc)] を使用すると、単一の文字列要素を含むリストが作成されます。
その後、より複雑なデータフレームにリストを挿入しようとします。整数と文字列の両方を含む列タイプではエラーが発生します。これは、問題が列の混合データ型にあることを示唆しています。
これを解決するには、loc の代わりに at 属性を使用することをお勧めします。このメソッドは一貫して単一の値を参照し、loc で発生する問題を回避します。さらに、挿入される列に dtype=object が設定されていることを確認すると、さらなるエラーが防止されます。
たとえば、次のコードは、'abc' リストを df2 データフレームのセル 1B に正常に挿入します。
import pandas as pd abc = ['foo', 'bar'] df2 = pd.DataFrame(data={'A': [12, 23], 'B': [None, None], 'C': ['bla', 'bla bla']}) df2['B'] = df2['B'].astype('object') # Ensure 'B' has dtype=object df2.at[1, 'B'] = abc print(df2)
出力:
A B C 0 12 NaN bla 1 23 [foo, bar] bla bla
以上がPandas DataFrame の特定のセルにリストを効果的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。