Подтвердить что ты не робот

Как удалить квадратную скобку из pandas dataframe

Я придумал значения в квадратной скобке (более похоже на list) после применения str.findall() к столбцу фрейма pandas. Как удалить квадратную скобку?

print df

id     value                 
1      [63]        
2      [65]       
3      [64]        
4      [53]       
5      [13]      
6      [34]  
4b9b3361

Ответ 1

Если значения в столбце value имеют тип list, используйте:

df['value'] = df['value'].str[0]

Или:

df['value'] = df['value'].str.get(0)

Docs.

Пример:

df = pd.DataFrame({'value':[[63],[65],[64]]})
print (df)
  value
0  [63]
1  [65]
2  [64]

#check type if index 0 exist
print (type(df.loc[0, 'value']))
<class 'list'>

#check type generally, index can be `DatetimeIndex`, `FloatIndex`...
print (type(df.loc[df.index[0], 'value']))
<class 'list'>

df['value'] = df['value'].str.get(0)
print (df)
   value
0     63
1     65
2     64

Если strings используйте str.strip, а затем преобразуйте в числовое значение astype:

df['value'] = df['value'].str.strip('[]').astype(int)

Пример:

df = pd.DataFrame({'value':['[63]','[65]','[64]']})
print (df)
  value
0  [63]
1  [65]
2  [64]

#check type if index 0 exist
print (type(df.loc[0, 'value']))
<class 'str'>

#check type generally, index can be `DatetimeIndex`, `FloatIndex`...
print (type(df.loc[df.index[0], 'value']))
<class 'str'>


df['value'] = df['value'].str.strip('[]').astype(int)
print (df)
  value
0    63
1    65
2    64