我有一个包含两列的数据框:uid和name:
In[1]: import pandas as pd
In[2]: df = pd.DataFrame([['123', 'OneTwoThree'],
['456', '456 FourFiveSix'],
['789', 'SevenEightNine']],
columns = ['uid', 'name'])
In[3]: df
Out[3]:
uid name
0 123 OneTwoThree
1 456 456 FourFiveSix
2 789 SevenEightNine
我想选择名称以uid开头的行。我可以通过列表理解:
In[4]: df[[name.startswith(uid) for uid, name in zip(df.uid, df.name)]]
Out[4]:
uid name
1 456 456 FourFiveSix
我想知道是否有一个更优雅的方法来使用熊猫.Series.str.开始,例如:
df[df.name.str.startswith(df.uid)]
我不知道它是否更优雅,但它是另一种选择:
或在一行中:
如果
startswith
是一个要求:事实证明,lambda版本比您的版本慢(至少在您的数据集上是这样),所以如果速度很重要的话,这比您的版本快一点,但是您的数据帧只需要包含两列:
相关问题 更多 >
编程相关推荐