Pandas0.22数据帧.drop排得太多了

2024-10-04 05:20:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

df = pd.concat([testdf,datadf]) 产生测向形状到目前为止还不错。你知道吗

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

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

tmpdf = df.drop(trndf.index)现在,这里的想法是从df数据帧中删除39074行,这将总共留下9768行。然而,tmpdf数据帧形状是(4514,15)丢失5254行。你知道吗

df使用一个默认索引,编号从0到48841,下面是一个示例

idx age work class 0 25 Private 1 28 Private

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

idx age work class 228 25 ? 2164 35 State-gov

开放的想法如何设法失去这些额外的行。感谢你对这方面的任何见解。谢谢


Tags: 文件数据dfageprivate编号classwork
1条回答
网友
1楼 · 发布于 2024-10-04 05:20:22

默认情况下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

相关问题 更多 >