从两个文件加载两个数据帧(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
不会重置索引,因此,如果testdf
和datadf
中都存在索引,则在抽取此类索引的同时会同时删除它们。drop
将删除所有重复的索引,因此您将从同时存在于testdf
和datadf
的索引中丢失更多行。
潜在的解决方案正在将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/