16

私はパンダにこのデータフレームを持っています:

d=pandas.DataFrame([{"a": 1, "b": 1}, {"c": 2, "b": 4}])
d["name"] = ["Hello", "World"]

「名前」列の文字列値に基づいて要素を選択し、値を文字列として取得したいと考えています。要素を選択するには:

d[d["name"] == "World"]["name"]
Out:
1    World
Name: name

問題は、単純な文字列ではなくシリーズを与えることです。文字列へのキャストは役に立ちません。どうすれば文字列"World"を取り出すことができますか? これが唯一の方法ですか?

d[d["name"] == "World"]["name"].values[0]

ありがとう。

4

3 に答える 3

10

@DSM が指摘しているように、一般に name の行は多数存在する可能性がある'World'ため、いずれかを選択する必要があります。

これを行う1つの方法は、where(そしてmax)を使用することです:

In [11]: d.name.where(d.name == 'World', np.nan)
Out[11]: 
0      NaN
1    World
Name: name, dtype: object

In [12]: d.name.where(d.name == 'World', np.nan).max()
Out[12]: 'World'

注: 「World」という名前の行がない場合、これは NaN を返します。

于 2013-03-29T15:36:39.647 に答える
1

更新: pandas > 1.0 (未テスト) を使用しない限り、長いテキストが切り捨てられるため、お勧めしません

これがどのバージョンの Pandas で機能するかはわかりませんが、別のオプションが 1 つあります。

d[d["name"] == "World"].to_string(index=False)

複数の行がある場合は、他のオプションがあります。

 max_rows      int, optional

切り捨てる前に表示する行の最大数。なしの場合は、すべて表示します。

 min_rows      int, optional

切り捨てられた表現で表示する行数 (行数が max_rows を超える場合)。

于 2020-05-12T05:19:25.357 に答える