私は一連の文字列を持っています。私はこのようなことをしたい:条件に基づいてpandasシリーズの値を更新します。
for item in series:
if '!' in item:
series[item] = item.split('!')[0]
基本的には、 '!'文字列の中の '!'の前の部分に置き換えてください。このコードは、シリーズをまったく変更していないようです。条件付き置換を正しく行うには?
私は一連の文字列を持っています。私はこのようなことをしたい:条件に基づいてpandasシリーズの値を更新します。
for item in series:
if '!' in item:
series[item] = item.split('!')[0]
基本的には、 '!'文字列の中の '!'の前の部分に置き換えてください。このコードは、シリーズをまったく変更していないようです。条件付き置換を正しく行うには?
私は条件がindexing with strで使用str.split
場合に必要ではないと思います。
s = pd.Series(['sss!dd','sdsd', 'aa!p'])
s = s.str.split('!').str[0]
0 sss
1 sdsd
2 aa
dtype: object
しかし、必要条件がmask
とstr.contains
を追加した場合:
s = s.mask(s.str.contains('!'), s.str.split('!').str[0])
print (s)
0 sss
1 sdsd
2 aa
dtype: object
の@ jezraelのデータセットを使用して:
In [74]: s
Out[74]:
0 sss!dd
1 sdsd
2 aa!p
dtype: object
In [75]: s = s.str.replace(r'\!.*','')
In [76]: s
Out[76]:
0 sss
1 sdsd
2 aa
dtype: object
オプション1あなたはまた、regex=True
パラメータでpd.Series.replace
を使用することができます
s.replace('(.*)!.*', r'\1', regex=True)
0 sss
1 sdsd
2 aa
dtype: object
オプション2
あなたは、私はまた、所定の位置にスペースを末尾のそれらを除去する必要がnumpy.core.defchararray.split
pd.Series(
[x[0] for x in np.core.defchararray.split(s.values.astype(str), '!')],
s.index
)
0 sss
1 sdsd
2 aa
dtype: object
を使用することができます? – user2559578
必要に応じて 's = s.str.strip()。str.split( '!')。str [0]'を使用します。 – jezrael