循环遍历 pandas 数据框并根据 True/False 将行附加到其他数据框

Looping through a pandas dataframe and append the rows to other dataframes depending on True/False

简单的问题,我第一次使用 pandas,但谷歌搜索仍然找不到答案。

我有这个数据框信息。

info.head
artist in_train new_filename
0 Barnett Newman True 102257.jpg
1 Barnett Newman True 75232.jpg
2 kiri nichol False 32145.jpg
.
.
.

现在我想创建两个新数据框并根据 in_train 列是真还是假向它们添加行信息。

train_info = pd.DataFrame(columns=('artist', 'filename'))
test_info = pd.DataFrame(columns=('artist', 'filename'))

for index, row in info.iterrows():
  if row["in_train"] == True:
    train_info.append(row[["artist", "new_filename"]])
  else:
    test_info.append(row[["artist", "new_filename"]])

出于某种原因,此代码将信息中的所有行分配给 test_info 而没有分配给 train_info。 我该如何解决?

iterrowspandas中的generally not a good idea,用masking

就可以很简单的解决
df = pd.DataFrame({'artist':np.random.randint(0,10,10),
                   'in_train':np.random.randint(0,2,10).astype(bool),
                   'new_filename':np.random.rand(10)})

train_info = df[df['in_train']].drop(columns='in_train').reset_index(drop=True)
test_info = df[~df['in_train']].drop(columns='in_train').reset_index(drop=True)