我有一个文件,其中分隔符(分隔符)是&#39 ;;' 。我将该文件读入pandas数据框 df 。现在,我想使用 df 中列c 的条件从df中选择一些行。列c中的数据格式如下:
[0]science|time|boot
[1]history|abc|red
and so on...
我有另一个单词 L 列表,其中包含
等值[history, geography,....]
现在,如果我在' |'上拆分c栏中的文字,那么我想从df中选择那些第一个单词不属于L的行。
因此,在这个例子中,我将选择df [0],但不会选择df [1],因为历史存在于L而科学不存在。
我知道,我可以在数据帧中的每个对象上写一个for循环和iter,但我想知道我是否可以以更紧凑和有效的方式做某事。
例如,我们可以这样做:
df.loc[df['column_name'].isin(some_values)]
我有这个:
df = pd.read_csv(path, sep=';', header=None, error_bad_lines=False, warn_bad_lines=False)
dat=df.ix[:,c].str.split('|')
但是,我不知道如何索引' dat'。 ' DAT'是一个熊猫系列,如下:
0 [science, time, boot]
1 [history, abc, red]
....
我尝试将数据索引如下:
dat.iloc[:][0]
但是,它给出了整个系列而不仅仅是第一个元素。
任何帮助都将不胜感激。
提前谢谢
答案 0 :(得分:0)
这是一种方法:
数据强>
df = pd.DataFrame({'c':['history|science','science|chemistry','geography|science','biology|IT'],'col2':range(4)})
Out[433]:
c col2
0 history|science 0
1 science|chemistry 1
2 geography|science 2
3 biology|IT 3
lst = ['geography', 'biology','IT']
解决强>
您可以使用列表理解:
df.loc[pd.Series([not x.split('|')[0] in lst for x in df.c.tolist()])]
Out[444]:
c col2
0 history|science 0
1 science|chemistry 1