我有一个主数据框,如下:
Time Frq Seq
12:46:17 4200.0 30700.0
12:49:29 4160.0 30690.0
12:46:18 3060.0 30700.0
12:46:18 3060.0 30700.0
12:46:19 3060.0 30700.0
12:46:20 3060.0 30700.0
12:46:20 4240.0 30700.0
12:46:19 4220.0 30700.0
12:46:18 4200.0 30700.0
12:46:18 4200.0 30700.0
12:46:38 3060.0 30700.0
12:43:04 4620.0 30701.0
12:46:38 4600.0 30701.0
12:46:05 4600.0 30701.0
12:46:37 3060.0 30700.0
12:48:35 3020.0 30690.0
,子数据框为:
Frq Seq
3060.0 30700.0
4600.0 30701.0
我想在主数据框中收集第一次出现的子数据框行。
我希望结果数据框为:
Time Frq Seq
12:46:18 3060.0 30700.0
12:46:38 4600.0 30701.0
答案 0 :(得分:1)
首先通过DataFrame.drop_duplicates
删除在master
中重复的内容,然后使用DataFrame.merge
-如果省略参数on
,则它通过两个DataFrame
之间的列名交集合并:
df = master.drop_duplicates(['Frq','Seq']).merge(child)
print (df)
Time Frq Seq
0 12:46:18 3060.0 30700.0
1 12:46:38 4600.0 30701.0
答案 1 :(得分:0)
我的方法是分组以获取每个组的第一个,然后为子数据框中的元素建立索引:
first = master.groupby('Frq', as_index=False).first()
first[first.Frq.isin(child.Frq)]
# Frq Time Seq
# 1 3060.0 12:46:18 30700.0
# 6 4600.0 12:46:38 30701.0
答案 2 :(得分:0)
pd.merge()
-将master dataframe
和child dataframe
与inner join
合并。
.drop_duplicate()
-删除所有具有duplicate row
和Frq
列值的Seq
重复,并且仅保留first-row
值。
df.reset_index()
-重置索引或索引的级别。
例如。
df = master.merge(child, on=['Frq','Seq'],
how='inner').drop_duplicates(['Frq','Seq'],keep= 'first').reset_index(drop=True)
print(df)
Time Frq Seq
0 12:46:18 3060.0 30700.0
1 12:46:38 4600.0 30701.0