我有一個看起來像這樣的資料框:
Column1 Column2
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
盡管 Column1 中的專案看起來像專案串列,但它們是字串。我想從此字串中洗掉方括號,洗掉引號并將該列中的所有值替換為相同的值,但作為逗號分隔的字串。我想要的輸出是:
Column1 Column2
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
我嘗試了以下功能,但它不會替換元素:
def string_convert(column_name):
lista=[]
for i in column_name:
i=i.strip("[]")
i=eval(i)
lista.append(i)
for m in lista:
if m == tuple:
column_name = m[0] ',' m[1]
else:
column_name = m
return df['other']
誰能幫我這個?提前致謝。
uj5u.com熱心網友回復:
這個回圈對我有用。
for i, row in df.iterrows():
tmp_val = row['Column1'].replace("'", "").replace("[", "").replace("]", "").split(',')
row['Column1'] = tmp_val
這將遍歷 DataFrame 的每一行,并通過執行字串替換來修改 Column1 中的單元格以洗掉您不想要的字符(方括號和單引號)。然后 .split(',') 創建串列,最后一行代碼用我們新創建的串列替換原始值。
uj5u.com熱心網友回復:
根據問題創建者在她自己的答案中包含的新的最終需求,比如生成一個包含所有值的最終串列column1,我建議按如下方式進行:
import pandas as pd
df = pd.DataFrame(columns=['column1','column2'])
df['column1'] = ["'['jjhjh', 'adads','adsd']'","'['adads','adsd']'","'['jjhjh', 'adads','adsd']'","'['adads','adsd']'","'['adads','adsd']'"]
df['column2'] = ['dwdwdqw','dwdwdqw','dwdwdqw','dwdwdqw','dwdwdqw']
df['column1'] = df['column1'].replace('\[|\'|\"|\]| ', '', regex=True)
df['column1'] = df['column1'].str.split(',')
final_list = [x for xs in df['column1'].tolist() for x in xs]
print(final_list)
輸出:
['jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'adads', 'adsd']
但我承認這種方法存在風險,因為如果你想要的字串在單詞之間有空格,它們將被洗掉,所以在你的情況下,我仍然認為你應該小心使用。
來自巴西的問候!
uj5u.com熱心網友回復:
我的案例的最佳解決方案是下面的代碼,因為我在每個字串中都有引號、雙引號和方括號。使用此代碼,我可以洗掉所有內容,然后在 For 回圈中洗掉了不必要的空格并將每一行拆分為一個串列:
df['column1']=df['column1'].replace('\[|\'|\"|\]', '', regex=True)
df['column1']=df['column1'].str.split(',')
lista=[]
for s in df['column1']:
for a in s:
lista.append(a)
lista1=[b.strip() for b in lista]
uj5u.com熱心網友回復:
通過利用str.replace():
df.assign(Column1=df['Column1'].str.replace(r"'\[(.*)\]',", r"\1,", regex=True))
Column1 Column2
0 'jjhjh', 'adads','adsd', 'dwdwdqw'
1 'adads','adsd', 'dwdwdqw'
2 'jjhjh', 'adads','adsd', 'dwdwdqw'
3 'adads','adsd', 'dwdwdqw'
4 'adads','adsd', 'dwdwdqw'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492591.html
上一篇:R-使用函式基于字串比較創建新列
下一篇:使用正則運算式匹配標頭和值,多行
