我有一个单词列表['light','medium','heavy'],我试图隔离多个数据框中可能出现这些单词的列。数据框:
df1
1 | 2 | 3 | 4 | 5 | REF
'light' 'medium' 'heavy' 2c17
26 42 15 2c17
32 52 19 2c17
24 37.9 10 2c17
df2
1 | 2 | 3 | 4 | 5 | REF
21 23 2c16
'medium' 'heavy' 2c16
52 19 2c16
37.9 10 2c16
df3
1 | 2 | 3 | 4 | 5 | REF
'light' 3c16
21 3c16
22 3c16
23 3c16
基本上,如果列包含列表中的单词,则将它们隔离。期望的输出:
df1
2 | 3 | 4 | REF
'light' 'medium' 'heavy' 2c17
26 42 15 2c17
32 52 19 2c17
24 37.9 10 2c17
df2
| 3 | 4 | REF
21 23 2c16
'medium' 'heavy' 2c16
52 19 2c16
37.9 10 2c16
df3
1 | REF
'light' 3c16
21 3c16
22 3c16
23 3c16
我的代码到目前为止,其中sh1是数据帧列表:
listofnewdf = []
for num in range(len(sh1)):
for i in range(len(sh1[num].columns)):
if pd.Series.any(sh1[num].iloc[:,i].str.contains(pat="light|medium|heavy")):
listofnewdf.append(pd.DataFrame({sh1[num].columns[i]:sh1[num].iloc[:,i],sh1[num]})
但是,这会为每个关键字生成单独的数据帧。任何帮助表示赞赏。
答案 0 :(得分:0)
您可以将 univ date ms ms_perc_rank
0 A 11/01/2007 0.2 0.22
1 A 11/02/2007 0.3 0.22
2 B 11/01/2007 0.4 0.42
3 B 11/01/2007 0.5 0.42
与布尔索引一起使用:
df.isin