![](/img/trans.png)
[英]How to find the number of unique values in comma separated strings stored in an pandas data frame column?
[英]convert pandas data frame column values into comma separated strings
我有一個看起來像這樣的數據框:
Column1 Column2
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
盡管 Column1 中的項目看起來像項目列表,但它們是字符串。 我想從此字符串中刪除方括號,刪除引號並將該列中的所有值替換為相同的值,但以逗號分隔的字符串。 我想要的 output 是:
Column1 Column2
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
我嘗試了以下 function 但它沒有替換元素:
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']
誰能幫我這個? 提前致謝。
根據問題創建者在她自己的答案中包含的新的最終需求,比如生成一個所有值為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)
Output:
['jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'adads', 'adsd']
但我承認這種方法存在風險,因為如果你想要的字符串在單詞之間有空格,它們將被刪除,所以在你的情況下我仍然認為你應該小心使用。
來自巴西的問候!
這個循環對我有用。
for i, row in df.iterrows():
tmp_val = row['Column1'].replace("'", "").replace("[", "").replace("]", "").split(',')
row['Column1'] = tmp_val
這遍歷 DataFrame 的每一行,並通過執行字符串替換來刪除不需要的字符(方括號和單引號)來修改 Column1 中的單元格。 Then.split(',') 創建列表,最后一行代碼用我們新創建的列表替換原始值。
通過利用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'
我的案例的最佳解決方案是下面的代碼,因為我在每個字符串中都有引號、雙引號和方括號。 使用此代碼,我可以刪除所有內容,然后在 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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.