【问题标题】:Alter column to store the split functioned string in Pandas Dataframe更改列以将拆分功能字符串存储在 Pandas Dataframe 中
【发布时间】:2021-08-04 01:46:32
【问题描述】:

我做了以下事情:

df[['col1','col2']] = df.col.str.split(',', expand = True)

它适用于“a,b​​”。 如果 col 值是一个不带逗号的字符串,如“a”,则上面的行将该字符串带到 col1。但是,如果我想在第二列即 col2 中使用它,是否有任何单行方法可以做到这一点?

注意:我只想在它得到一个不带逗号的字符串时反向工作。

更多说明: 示例数据框列,

col: "a,b", "a"

预期输出,

第1行-> col1:a,col2:b

第 2 行-> col1:无,col2:a

提前致谢:))

【问题讨论】:

  • 你的意思是这样的:df[['col1','col2']] = df.col.str.split(',', expand = True).iloc[:,::-1] ?
  • 非常感谢,伙计!!!它有效:))
  • @anky 但它反向存储所有值,我的意思是“a,b” col2 得到 'a' 而 col1 得到 'b'。但我希望它只对没有逗号的字符串反向工作。
  • 您应该使用虚拟数据框和预期输出来编辑您的问题,我将重新打开它。
  • 请看一下..

标签: python-3.x regex pandas dataframe extract


【解决方案1】:

您应该使用extract 而不是split

df.col.str.extract(r'(\w*),?(\w+)')

   0  1
0  a  b
1     a

在哪里df = pd.DataFrame({'col':['a,b', 'a']})

请注意,正则表达式可以根据需要更改

编辑:

 df.col.str.extract(r'^([^,]*),?(\b\w+)')

        0         1
0  Uttara     Dhaka
1          Faridpur

【讨论】:

  • 以上对于该示例来说工作正常。如果“a”是城市名称,“b”是州名,那么正则表达式是什么?
  • @AbuUbaida 你得举个例子
  • 假设,df = pd.DataFrame({'col':['Uttara,Dhaka', 'Faridpur']})。我想要这种格式的输出:row 1-> col1: Uttara, col2: Dhaka, row 2-> col1: none , col2: 法里德普尔。为方便起见,您可以将 col1col2 值分别视为城市和州名。所以它可以是任何有效的名称。 :)) 感谢您的宝贵时间。
  • @AbuUbaida 在我上面的代码中,其中有\q 将其更改为[^,]
  • 我在您的代码 df.col.str.extract(r'(\w*),?(\w+)') 中没有看到任何 \q。你的意思是\w?如果是这样,这个df.col.str.extract(r'([^,]*),?([^,]+)') 就像前一个一样工作。 row 2-> 在这两种情况下都显示col1: Faridpu, col2: r
猜你喜欢
  • 2022-12-29
  • 1970-01-01
  • 2023-03-05
  • 2011-12-03
  • 2020-11-10
  • 2017-01-07
  • 2019-06-03
相关资源
最近更新 更多