【发布时间】:2018-11-02 02:59:04
【问题描述】:
几个小时以来,我一直在寻找这个问题的答案。我正在使用 python 3.6.7 和 pandas 0.23.4。我正在尝试使用 query() 从数据框中获取行的子集,然后将其他列添加到该子集中。下面是sn-p的代码:
df.query(f'({column}_c != {column}_c) & ({column}_t == {column}_t)')
.assign(reason='Calculated has value but target does not',
name=column,
calced=df[column + '_c'],
targeted=df[column + '_t'])
原始数据帧大约有 29K 行,当我只运行该链的查询部分时,我得到 0 行。但是,在 assign() 之后,我又多了 29K 行。我认为 query() 复制了数据框,所以我不希望出现这种行为。任何人都知道发生了什么(我也尝试了 df[] 方法,结果相同)
【问题讨论】:
-
您的查询返回一个空 DataFrame,并且您使用原始 DataFrame 为该空 DataFrame 分配(几个)新列,因此最后的行数相同。这与分配无关。这是关于您添加的新列(例如
df[column + '_c']。这是指原始数据帧,而不是新创建的空数据帧。)
标签: python-3.x pandas