循环遍历 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。
我该如何解决?
iterrows
是pandas
中的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)
简单的问题,我第一次使用 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。 我该如何解决?
iterrows
是pandas
中的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)