如何从pandas数据框中删除方括号

时间:2016-07-01 14:03:29

标签: python string pandas dataframe

在将var myText = svg.selectAll(".mytext") .data(graph.nodes) .enter() .append("text") //the rest of your code 应用于pandas数据框的列后,我想出了方括号中的值(更像是list)。如何拆除方括号?

str.findall()

2 个答案:

答案 0 :(得分:23)

如果列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

答案 1 :(得分:0)

如果是字符串,我们也可以使用string.replace方法

import pandas as pd

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

print(df)
  value
0  [63]
1  [65]
2  [64]

df['value'] =  df['value'].apply(lambda x: x.replace('[','').replace(']','')) 

#convert the string columns to int
df['value'] = df['value'].astype(int)

#output
print(df)

   value
0     63
1     65
2     64

print(df.dtypes)
value    int32
dtype: object