お世話になります。
以下のようなdataframeがあるとします。
df_test = pd.DataFrame({ 'a' : ['a-1', 'a-2', '3', '4', 'a-5'], 'b' : [10, 20, 30, 40, 50] })
a | b | |
---|---|---|
0 | a-1 | 10 |
1 | a-2 | 20 |
2 | 3 | 30 |
3 | 4 | 40 |
4 | a-5 | 50 |
a列のインデックス2と3には数字の前に「a-」が無いため付け足したいと思います。
以下のようなコードを書いてみたのですが上手くいきません。
「a-」が無い行を抽出し、apply関数とlambdaを使って文字列を連結すればできるかと考えたのですがだめでした。
以下のメッセージが表示され、dataframeの結果は変わりません。
/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy """Entry point for launching an IPython kernel.
どのようにすればいいでしょうか。
df_test[~df_test['a'].str.contains('a-')]['a'] = df_test[~df_test['a'].str.contains('a-')]['a'].apply(lambda x: 'a-' + x)
以下のようなdataframeを作りたいです。
a | b | |
---|---|---|
0 | a-1 | 10 |
1 | a-2 | 20 |
2 | a-3 | 30 |
3 | a-4 | 40 |
4 | a-5 | 50 |
回答2件
あなたの回答
tips
プレビュー