首页 > 解决方案 > 根据列的子集从列表中删除重复的 Pandas 数据帧

问题描述

我有一个名为的数据框列表tempDFList

type(tempDFList)
list

type(tempDFList[0])
pandas.core.frame.DataFrame

它们有一个共同的列子集,包括Previous Pivot Price&Pivot Price但并非所有列都相同。

如何使用类似drop_duplicatesusing defaultkeep='first来确保我没有任何具有相同Previous Pivot Price&Pivot Price的框架tempDFList

所需的输出是一个数据帧列表,其中没有任何具有相同Previous Pivot Price&的帧Pivot Price。对于下面的示例数据,只剩下两个。

代码来自df.to_dict

每个都是一个单独的数据框,只有一行。这些在tempDFList.

{'Re_236_H1': {0: nan},
 'Re_382_H1': {0: nan},
 'Re_50_H1': {0: 0.8677},
 'Re_618_H1': {0: 0.8668},
 'Previous Pivot Date': {0: '2021-04-13 09:00:00'},
 'Previous Pivot Price': {0: 0.86408},
 'Date': {0: Timestamp('2021-04-13 13:00:00')},
 'Pivot Price': {0: 0.871180},
 'Pivot Length': {0: 0.007099}}


{'Re_236_M15': {0: nan},
 'Re_382_M15': {0: nan},
 'Re_50_M15': {0: 0.8677},
 'Re_618_M15': {0: 0.8668},
 'Previous Pivot Date': {0: '2021-04-13 09:45:00'},
 'Previous Pivot Price': {0: 0.86408},
 'Date': {0: Timestamp('2021-04-13 13:00:00')},
 'Pivot Price': {0: 0.871180},
 'Pivot Length': {0: 0.007099}}

{'Re_236_H4': {0: nan},
 'Re_382_H4': {0: nan},
 'Re_50_H4': {0: 0.8677},
 'Re_618_H4': {0: 0.8668},
 'Previous Pivot Date': {0: '2021-04-14 09:00:00'},
 'Previous Pivot Price': {0: 0.89408},
 'Date': {0: Timestamp('2021-04-13 13:00:00')},
 'Pivot Price': {0: 0.891180},
 'Pivot Length': {0: 0.008099}}

标签: pandas

解决方案


也许一个简单的过滤set就可以了:

out = []
seen = set()
for d in tempDFList:
    t = (d["Previous Pivot Price"].iat[0], d["Pivot Price"].iat[0])
    if t not in seen:
        out.append(d)
        seen.add(t)

print(*out, sep="\n\n")

印刷:

   Re_236_H1  Re_382_H1  Re_50_H1  Re_618_H1  Previous Pivot Date  Previous Pivot Price                Date  Pivot Price  Pivot Length  df
0        NaN        NaN    0.8677     0.8668  2021-04-13 09:00:00               0.86408 2021-04-13 13:00:00      0.87118      0.007099  df

   Re_236_H4  Re_382_H4  Re_50_H4  Re_618_H4  Previous Pivot Date  Previous Pivot Price                Date  Pivot Price  Pivot Length   df
0        NaN        NaN    0.8677     0.8668  2021-04-14 09:00:00               0.89408 2021-04-13 13:00:00      0.89118      0.008099  df2

推荐阅读