我有以下数据帧,我只想抓取汇总列只包含一个'->'实例的行。我怎么能在熊猫身上做到这一点?
输入:
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
有助于识别它位于哪一行,因此预期结果将是实际消息,而不是True
或False
。
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