[解決済み] Pandas/Python。ある列の値を別の列の値に基づいて設定する
2022-12-11 18:50:06
質問
Pandasのデータフレームで、あるカラムの値を別のカラムの値に基づいて設定する必要があります。これはロジックです。
if df['c1'] == 'Value':
df['c2'] = 10
else:
df['c2'] = df['c3']
私はこれが私が望むこと、つまり単に新しい値を持つ列を作成すること(または既存の列の値を変更すること:私のためにどちらかが動作します)を行うために取得することはできません。
もし私が上記のコードを実行しようとしたり、関数として書いてapplyメソッドを使用すると、次のようになります。
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
どのように解決するのですか?
を使ったインデックス作成が一つの方法でしょう。
.loc
.
例
データフレームの例がないので、ここで作ってみます。
import numpy as np
import pandas as pd
df = pd.DataFrame({'c1': list('abcdefg')})
df.loc[5, 'c1'] = 'Value'
>>> df
c1
0 a
1 b
2 c
3 d
4 e
5 Value
6 g
仮に、あなたが
新しいカラムを作成する
c2
と同じです。
c1
ただし
c1
は
Value
である場合、それを10に割り当てたいと思います。
まず、新しいカラムを作成します。
c2
と等価になるように設定します。
c1
と等価になるように設定します(基本的に同じことをします)。
df = df.assign(c2 = df['c1'])
# OR:
df['c2'] = df['c1']
次に
c1
と等しい
'Value'
を使って
.loc
で、希望する値を
c2
に希望する値を代入します。
df.loc[df['c1'] == 'Value', 'c2'] = 10
で、結局こうなる。
>>> df
c1 c2
0 a a
1 b b
2 c c
3 d d
4 e e
5 Value 10
6 g g
もし、あなたが質問で提案したように、時には 既に持っているカラムの値を置き換える をしたい場合、新しいカラムを作成するのではなく、カラムの作成をスキップして、次のようにしてください。
df['c1'].loc[df['c1'] == 'Value'] = 10
# or:
df.loc[df['c1'] == 'Value', 'c1'] = 10
与えること。
>>> df
c1
0 a
1 b
2 c
3 d
4 e
5 10
6 g
関連
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] シリーズの真偽値が曖昧である。a.empty, a.bool(), a.item(), a.any(), a.all() のいずれかを使用します。
-
[解決済み] Python PandasでDataFrameの2つの値の間の行を選択する方法?
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] pandasのデータフレームに文字列があるかどうかをチェックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複