簡體   English   中英

為 pandas dataframe 的每一行替換列中的字符串

[英]Replace a string in a column for each row of a pandas dataframe

編輯:我不得不將此部分添加到我原來的問題中,因為它是相關的。

我有一個框架,它在名為dfload的名稱列中包含許多不同的前綴。

我使用以下命令創建一個名為df的切片。

df = dfload.loc[dfload['Name'].str.contains("testData/")]

原始問題從這里繼續:

然后,我有以下 pandas dataframe 稱為df

   name               etc etc etc
0  testData/example1  etc ...
1  testData/example2  ...
2  testData/example3
3  testData/example4
...

我想用整個列的任何內容替換字符串testData/所以它看起來像這樣

   name      etc etc etc
0  example1  etc ...
1  example2  ...
2  example3
3  example4
...

我使用了以下命令df['name'] = df['name'].str.replace('testData/','')

但我得到這個錯誤,

<ipython-input-20-dae746394d2d>: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
  df['name'] = df['name'].str.replace('testData/','')

dataframe 看起來不錯,為什么會出現此錯誤? 這樣做的“正確”方法是什么?

為避免您收到警告,請像這樣創建df

import pandas as pd
df = pd.DataFrame(dfload[dfload.name.str.contains('testdata/')])

指定它是 dataframe 而不是切片可能是阻止 pandas 拋出警告的原因

用這個:

df.name = df.name.str.replace('testData/','',regex = True)

您應該嘗試使用 lamda 函數在每一行上應用替換語句:

df["name"]= df.apply(lambda x: x['name'].replace('testData/',''), axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM