如何选择值列表中首次出现的行

时间:2018-07-19 20:32:42

标签: python pandas dataframe

我有此数据:

sample = pd.DataFrame({'CompanyID': np.random.choice(['1', '2', '3', '4', '5', '6'],50),
               'Date': np.random.choice(pd.Series(pd.date_range('2018-01-01', freq='D', periods=180)), 50),
               'Credits': np.random.uniform(0,1000,50),
               'Amount': np.random.uniform(0, 1000, 50),
              }, columns=['Date', 'CompanyID', 'Credits', 'Amount'])
sample = sample.sort_values('CompanyID')
sample['Days'] = sample.Date.diff().map(lambda x: abs(x.days))
sample

我正在寻找每个公司每次购买一揽子信用额之间的天数。但是,每个公司的最新行都必须具有Days的{​​{1}}值,而不是为公司购买的最新包装与从公司购买的最旧包装之间的日期差值数据框中的上方。

我的问题:如何在此数据帧中找到第一个出现的CompanyID(最好是能够传递唯一的CompanyID的列表)并将NaN值替换为{{1} }?

1 个答案:

答案 0 :(得分:0)

Idx = sample.drop_duplicates(subset ='CompanyID',keep =“ first”) sample ['Date'] [sample.index.isin(list(Idx.index)] = None