我有一个包含4列A,B,C,D和一个List的数据框。我需要使用B,C,D列和列表创建列,如下面的输出部分所示。
hier_List= [[pages2 , book1 , paper3] , [pen1 , rifle2 , ink3] , [words1 ,book2, ink3]]
必须使用上述列表创建该列。
数据框:
A B C D
C_1 1971 book1 nan
C_1 1971 pages2 pages2
C_1 1970 book1 nan
C_1 1972 book1 nan
C_1 1973 letters4 nan
输出:
对于每一行,我应该检查C列值是否存在于hier_list的任何子列表中。如果存在,则标志是,否则,否。
A B C D is_present_any_list
C_1 1971 book1 nan yes
C_1 1971 pages2 pages2 yes
C_1 1970 book1 nan yes
C_1 1972 book1 nan yes
C_1 1973 letters4 nan no
我不知道该怎么做,请帮助我,如果需要进一步说明,请告诉我。
答案 0 :(得分:1)
将numpy.where
与isin
一起使用,并将嵌套列表与numpy.concatenate
合并:
df['is_present_any_list'] = np.where(df['C'].isin(np.concatenate(hier_List)), 'yes', 'no')
print (df)
A B C D is_present_any_list
0 C_1 1971 book1 NaN yes
1 C_1 1971 pages2 pages2 yes
2 C_1 1970 book1 NaN yes
3 C_1 1972 book1 NaN yes
4 C_1 1973 letters4 NaN no