簡體   English   中英

將 pandas 數據框列值轉換為逗號分隔的字符串

[英]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.

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