熊猫会在所有数据框中获取具有相同ID的所有记录

时间:2018-12-06 00:19:59

标签: python python-3.x pandas

我有一个数据框列表。每个数据框都有一个称为def list = ["H 11 * * * % env=TEST;state=UP"] def a = list.findAll { it.indexOf('%') } if (a.size() > 0) { print "Found: " + a.size() } 的列。 我想获取所有数据帧中probe_id存在的所有行。换句话说,我想在probe_id上找到数据框的交集。

例如,假设我有4个数据帧,每个数据帧都有probe_id。在这种情况下,我将返回该行。如果任何数据框中都缺少probe_id '0001',我想跳过该行。

此外,由于每个数据框其他列中的值可能会有所不同,因此我需要确保此数据不会丢失。

因此,如果4个数据帧中的每一个都有2列,则结果应该是8列的新数据帧,其中记录probe_id存在于所有4个数据帧中。

我正在使用:

probe_id

它似乎可以工作,但是我不确定并且有太多记录需要检查。我对使用z = reduce(lambda x, y: pd.merge(x, y, on='PROBE_ID', how='inner'), dataframes)reduce并不完全有信心,因此,如果有人可以让我知道这是否正确,以及是否可以实现我的目标,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用concat,如果它们共享同一列,我想您可以将其还原一次,多次保存相同的值是多余的

df_out = pd.concat([
    x.set_index('dataframes') for x in dataframes
], axis=1, join ='inner').reset_index()