特定の基準に基づいて複数の方程式を必要とするデータフレームがあります。私は識別子の最初の3文字を取る必要があり、それが真であれば、その行に関連付けられた値を一定の量で除算する必要があります。特定の基準に基づいて複数の方程式をパンダ列に適用する必要があります
ID Value
US123 10000
US121 10000
MX122 10000
MX125 10000
BR123 10000
BR127 10000
私はIDが「MX」で始まる場合、100で値を分割し、IDが「BR」で始まる場合は1000の値を分割する必要があります。次のように
データフレームです。その他の値はすべて同じにする必要があります。
また、フィルタリングされた新しいデータフレームを作成したくありません。 IDでフィルタリングして論理チェックを成功させましたが、もっと大きなフレームに適用する必要があります。
これは、フィルタリングされたフレームに使用しているコードです。
filtered['Value'] = np.where(filtered.ID.apply(lambda x: x[:3]).isin(['MX']) == True, filtered.Value/100, filtered.Value/1000)
は私もdf.locを試みたが、私はデータフレームに変更を適用する方法を見つけ出すことができない、それだけで私の一連のデータを示すが、DFにそれを適用していないようです。
このコードはここにある:
df.loc[(df['ID'].str.contains("MX") == True), 'Value']/100
df.loc[(df['ID'].str.contains("BR") == True), 'Value']/1000
これを行うには、任意のより良い方法はありますか? df.locを使用して変更をシリーズに表示するのではなく、メインのデータフレームにどのように適用できますか?
所望の出力は次のようになります。
ID Value
US123 10000
US121 10000
MX122 100
MX125 100
BR123 10
BR127 10
ありがとう!
これは面白いおかげで非常に多く、作品!/=の部分は、なぜ分割記号が=記号の前にあるのかという点で混乱している。 – staten12
C _increment_/_decrement_(++/- )演算子と似ていますが、値を増減する代わりにPythonがインクリメント/デクリメントされた値を変数に再割り当てします。例: - 'var + = 1'は、より冗長な' var = var + 1'を書くためのより冗長な形式です。除算/乗算も同じです。 –