【问题标题】:Pandas selection if another columns contains some shared string [duplicate]如果另一列包含一些共享字符串,则熊猫选择 [重复]
【发布时间】:2019-03-19 22:51:02
【问题描述】:

我有以下熊猫数据框:

   countryCode   Name   number      myprice prices
           DZ  name1  number1         US.p    nan
           DZ  name1  number1  AU.currency    45
           DZ  name1  number1  DZ.currency    55
           DZ  name1  number1         DZ.p    62
           DZ  name1  number1         AU.p     73
           DZ  name1  number1  US.currency    nan
           AU  name1  number1         US.p    nan
           AU  name1  number1  AU.currency    77

我只想在 countryCode 中的字符串位于 myprice 列中时选择行。

必填:

   countryCode   Name   number      myprice prices
           DZ  name1  number1  DZ.currency     55.0
           DZ  name1  number1         DZ.p     62.0
           AU  name1  number1  AU.currency     77.0

我尝试了以下操作:

df = pd.read_clipboard()
df[df.countryCode.isin(df.myprice)]
df[df.myprice.str.contains(df.countryCode.str)]

我已经尝试了一段时间,但没有成功。

如何做到这一点?

【问题讨论】:

  • 也许df.apply(lambda x: x['countryCode'] in x['myprice'], axis=1) ?

标签: python pandas


【解决方案1】:

看看你的例子,你可以试试:

df[df.countryCode.eq(df.myprice.str.split(".").str[0])]

  countryCode   Name   number      myprice  prices
2          DZ  name1  number1  DZ.currency    55.0
3          DZ  name1  number1         DZ.p    62.0
7          AU  name1  number1  AU.currency    77.0

【讨论】:

  • 能不能一概而论,比如mypricecurrency.DZ的时候?
  • [b in a for a, b in zip(df['myprice'], df['countryCode'])] 与划线答案中的内容相同。 :)
猜你喜欢
  • 2018-12-05
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多