これは私の最初の投稿ですので、うまくいけば私は疑問に思っていません。 基本的に、これは2つの部分からなる質問です。列A = "有効"かどうか最初にチェックするコードを設定する必要があります。これが当てはまる場合は、B列から部分文字列を抽出し、新しい列に配置する必要があります。ここには「C」というラベルが付けられています。条件が偽であれば、 "NA"を入れたいと思います。私の望む結果については、2番目の表を参照してください。条件付きでサブストリングをpandasデータフレームの新しい列にコピーする方法は?
| A | B |
|-------------|-----------------------------------|
| VALID |asdfafX'XextractthisY'Yeaaadf |
| INVALID |secondrowX'XsubtextY'Yelakj |
| VALID |secondrowX'XextractthistooY'Yelakj |
| A | B | C |
|-------------|-------------------------------------|-----------------|
| VALID |"asdfafX'XextractthisY'Yeaaadf" | extractthis |
| INVALID |"secondrowX'XsubtextY'Yelakj" | NA |
| VALID |"secondrowX'XextractthistooY'Yelakj" | extractthistoo |
注意すべきいくつかのこと:
-Theサブストリングが常にフレーズ "X'X" の後に起動して、右の "Y'Y" の前に終了します。
- 部分文字列は、セルからセルまでの長さが異なります。
私は次のコードが間違っている知っているが、私はこの問題を解決しようとしてきたどのようにお見せしたかった:
import pandas as pd
if df[A] == "VALID":
df[C] = df[B]df.str[start:finish]
else:
df[C].isna()
私は新しい午前として、私は、この基本的なコードのエラーのために謝罪すべてのPythonとまだIDEと試用&私にご案内するエラーに依存しています。あなたが提供できるどんな助けもありがとうございます。
ための先読みである。B.str。 '(?<= X'X)(。*?)(?= Y'Y)") 'df ['C']'を初期化する必要はなく、 'NaN'がデフォルトです。 – AChampion
パーフェクト。それはトリックでした!これで助けていただきありがとうございます。 – ParalysisByAnalysis