如果列只包含一个字符串实例,则设置pandas数据帧



我有以下数据帧,我只想抓取汇总列只包含一个'->'实例的行。我怎么能在熊猫身上做到这一点?

输入:

idx  summary
0    McDonalds -> Wendys -> Popeyes
1    Popeyes -> Taco Bell
2    Carls Jr -> Arbys
3    Arbys -> Popeyes -> Taco Bell -> KFC
4    KFC -> Popeyes -> Boston Market

预期输出:

idx  summary
1    Popeyes -> Taco Bell
2    Carls Jr -> Arbys

str.count('->')==1将获取仅出现一次的->。使用loc有助于识别它位于哪一行,因此预期结果将是实际消息,而不是TrueFalse

df_new = pd.DataFrame(df.loc[df["summary"].str.count('->')==1])
print(df_new)

如果您的输入保存为变量df,则会产生以下结果:

ct_arrow = df.apply(lambda x: x.summary.count('->'), axis=1)
df = df.loc[ct_arrow==1]
print(df)

您可以使用以下

df[df["summary"].str.count('->')==1]

正如@mozway所建议的,使用您以前的数据帧作为起点:

>>> df
first_stop  second_stop     third_stop
0  mcdonalds  burger king        popeyes
1  mcdonalds          N/A            N/A
2     wendys          kfc            N/A
3  taco bell          kfc         wendys
4    popeyes          kfc  panda express
>>> df[df.replace('N/A', pd.NA).count(axis=1).eq(2)]
first_stop second_stop third_stop
2     wendys         kfc        N/A

相关内容

  • 没有找到相关文章

最新更新