我正在尝试根据另一个列表中的文本来修剪列表中的文本。直接在两个列表上调用时,以下函数可以正常工作
public class Controller implements Initializable {
// Links to Singleton classes
private Singleton sin = Singleton.getInstance();
// Links to FXML elements
@FXML
private Label counter;
private StringProperty singletonCounter;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
singletonCounter = new SimpleStringProperty();
singletonCounter.set(sin.getCount() + "");
counter.textProperty().bind(singletonCounter);
}
public void buttonClicked() {
sin.increment();
singletonCounter.setValue(sin.getCount() + "");
}
}
但是,以下内容什么也没有做,我也没有错误
def remove_texts(texts, texts2):
to_remove = []
for i in texts2:
if i in texts:
to_remove.append(i)
texts = [j for j in texts if j not in to_remove]
return texts
也没有执行以下操作。再次没有错误返回
df_other.texts = df_other.texts.map(lambda x: remove_texts(x, df_other.to_remove_split))
任何想法都值得赞赏。
答案 0 :(得分:1)
您实际上是想找出texts
之间的设置差异
和texts2
。假设它们包含:
texts = [ 'AAA', 'BBB', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH' ]
texts2 = [ 'CCC', 'EEE' ]
然后,短裤解决方案是只计算集合差, 而不使用 Pandas :
set(texts).difference(texts2)
给予:
{'AAA', 'BBB', 'DDD', 'FFF', 'GGG', 'HHH'}
或者,如果您只想要一个列表(而不是 set ),请输入:
sorted(set(texts).difference(texts2))
如果出于某些原因您想使用 Pandas ,请从 创建两个DataFrame:
df = pd.DataFrame(texts, columns=['texts'])
df2 = pd.DataFrame(texts2, columns=['texts'])
然后您可以将设置差异计算为:
df.query('texts not in @df2.texts')
或
df.texts[~df.texts.isin(df2.texts)]