从字符串中提取元素作为列Pandas

时间:2019-02-26 08:48:48

标签: python pandas

我有一个如下所示的数据集

clean.list_raw_id.head(3)
0    {5177, 5178}
1    {2653, 2655}
2          {2793}

我要添加一列值5177、2653和2793

如何在python中做到这一点

我正在尝试在列上使用apply,但它不起作用

我能够使用以下代码提取元素

[e.strip('{}') for e in clean.list_raw_id[1].split('},{')]

3 个答案:

答案 0 :(得分:1)

pd.Series.strapply一起使用。给定df

          data
0  {5177,5178}
1  {2653,2655}
2       {2793}

df.data = df.data.str.findall("\d+").apply(lambda x:x[0])
print(df)
   data
0  5177
1  2653
2  2793

答案 1 :(得分:1)

使用Series.str.extract获取第一个数值:

df.data = df.data.str.extract("(\d+)")
print (df)
   data
0  5177
1  2653
2  2793

答案 2 :(得分:0)

df = pd.DataFrame(data={'vals': [{5177, 5178}, {2653, 2655}, {2793}]})

df['new_col'] = df['vals'].apply(lambda x: list(x)[0])

返回

           vals  new_col
0  {5177, 5178}     5177
1  {2653, 2655}     2653
2        {2793}     2793