我有三份 list :
a = ['AFM_123_H2O_56', '345_FM_CO2', 'H6C6_AFM_test', 'dio_CO2_FM', 'check_H2O_FM', 'sample_FM_H6C6', 'AFM_67_H2O']
condition1 = ['H2O', 'CO2', 'H6C6']
condition2 = ['FM', 'AFM']
输出应如下所示:
c = [['AFM_123_H2O_56', 'AFM_67_H2O'], #all strings containing H2O and AFM
['check_H2O_FM'], #all strings containing H2O and FM
['345_FM_CO2', 'dio_CO2_FM'], #all strings containing CO2 and FM
['H6C6_AFM_test'], #all strings containing H6C6 and AFM
['sample_FM_H6C6']] #all strings containing H6C6 and FM
或者,如果使用Pandas 数据帧,则输出应如下所示:
H2O_AFM ['AFM_123_H2O_56', 'AFM_67_H2O']
H2O_FM ['check_H2O_FM']
CO2_FM ['345_FM_CO2', 'dio_CO2_FM']
H6C6_AFM ['H6C6_AFM_test']
H6C6_FM ['sample_FM_H6C6']
我需要根据"condition1"和"condition2"列表中的值对"a"列表中的元素进行分组,并将结果保存到第三个列表中.我知道如何使用for循环,但我想使用pandas可能是更好的解决方案.
我只知道在一种情况下怎么做:
pattern = '(%s)' % '|'.join(map(re.escape, condition1))
series_files = pd.Series(a)
df_grouped_files = series_files.groupby(series_files.str.extract(pattern, expand=False), sort=False).agg(list)
但我不知道如何从两个列表条件来计算叉积.