我有相同的数据集,但是在不同的星期内(因此以后的星期包含新行)。我想将新行附加到原始数据框,以创建一个具有所有唯一行且无重复的大数据框。我不能只花最后一个星期,因为有些星期会被删除。
我尝试使用以下代码,但不知何故我的final_info数据框仍然包含一些非唯一值
final_info = data[list(data.keys())[-1]]['all_info']
for week in reversed(data.keys()):
df_diff = pd.concat([data[week]['all_info'],final_info]).drop_duplicates(subset='project_slug',
keep=False)
final_info = final_info.append(df_diff).reset_index(drop=True)
有人看到哪里出了问题吗?
如果我理解您的问题,那么您只是想将一个数据帧中的唯一行添加到另一数据帧中。我认为不需要像您所做的那样遍历所有键。在这个问题上有一个示例,我认为可以为您提供帮助,并且我认为从概念上讲1是比较容易的。我将尝试通过一个例子来使其更加清晰。
因此,如果您有一个数据框A:
col1 col2
1 2
2 3
3 4
和数据框B:
col1 col2
1 2
2 3
6 4
这两个数据帧的前两行相同,但后几行不同。如果要将所有唯一行都放入一个数据框中,则可以首先从其中一个数据框中获得所有唯一行。因此,对于此示例,您可以在数据帧B中获得唯一行,在此示例中将其称为df_diff。为此的代码将是
df_diff = B[~B.col1.isin(A.col1)]
output: col1 col2
6 4
上面的代码行将其称为布尔掩码,然后使用〜取反,以便获得数据帧B中的所有行,而col1值不在数据帧A中。
然后,您可以将此数据帧df_diff与第一个数据帧A合并。我们可以将其称为df_full。此步骤完成:
df_full = pd.concat([A, df_diff], ignore_index=True)
ignore_index = True只是重置结果数据帧的索引。这将为您提供:
col1 col2
1 2
2 3
3 4
6 4
现在,上面的数据框在数据框B中具有新行,再加上数据框A中的原始行。
我认为这将适合您的情况,并且代码行可能更少。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句