从两个文件加载两个数据帧(testdf和datadf),然后使用

df = pd.concat([testdf,datadf])
到目前为止,产生的df.shape为(48842,15)。

现在我需要80%的训练,10%的测试,10%的验证

trndf = df.sample(frac=0.8)返回正确的形状(39074,15)。

现在,这里的想法是从df数据框中删除这39074行,总共应该剩下9768行。但是,tmpdf数据框的形状是(4514,15)丢失5254行。

df使用默认索引,该索引的编号从0到48841,下面的示例

tmpdf = df.drop(trndf.index)

trndf数据框样本下面是随机样本,我确认索引编号与df数据帧中的索引匹配

idx age work class 0 25 Private 1 28 Private

对于如何设法减少多余的行持开放态度。对此有任何见识。谢谢

最佳答案

默认情况下,pd.concat不会重置索引,因此,如果testdfdatadf中都存在索引,则在抽取此类索引的同时会同时删除它们。

drop将删除所有重复的索引,因此您将从同时存在于testdfdatadf的索引中丢失更多行。

潜在的解决方案正在将df = pd.concat([testdf,datadf])更改为

df = pd.concat([testdf,datadf]).reset_index()


要么

df = pd.concat([testdf,datadf], ignore_index=True)


问题转载:

df = pd.DataFrame({'a': {0: 0.6987303529918656,
  1: -1.4637804486869905,
  2: 0.4512092453413682,
  3: 0.03898323021771516,
  4: -0.143758037238284,
  5: -1.6277278110578157}})

df_combined = pd.concat([df, df])
print(df_combined)
print(df_combined.shape)
sample = df_combined.sample(frac=0.5)
print(sample.shape)
df_combined.drop(sample.index).shape

          a
0  0.698730
1 -1.463780
2  0.451209
3  0.038983
4 -0.143758
5 -1.627728
0  0.698730
1 -1.463780
2  0.451209
3  0.038983
4 -0.143758
5 -1.627728
(12, 1) # print(df_combined.shape)
(6, 1)  # print(sample.shape)
Out[37]:
(4, 1)  # df_combined.drop(sample.index).shape

关于python - Pandas 0.22 dataframe.drop更多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48717245/

10-12 13:53