熊猫的行为,地图和行为异常

时间:2019-02-23 12:33:06

标签: python-3.x pandas

我正在尝试根据另一个列表中的文本来修剪列表中的文本。直接在两个列表上调用时,以下函数可以正常工作


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))

任何想法都值得赞赏。

1 个答案:

答案 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)]