【问题标题】:pandas: create another data frame using existing data frame from the given index positionpandas:使用给定索引位置的现有数据框创建另一个数据框
【发布时间】:2022-10-31 16:31:58
【问题描述】:

我有一个以下数据框,其中我有一个基于某些条件的索引位置列表,所以只想根据索引位置创建新的数据框并检查一些条件。

df = pd.DataFrame()
df['index'] = [ 0, 28, 35, 49, 85, 105, 208, 386, 419, 512, 816, 888, 914, 989]
df['diff_in_min'] = [ 5, 35, 42, 46, 345, 85, 96, 107, 119, 325, 8, 56, 55, 216]
df['val_1'] = [5, 25, 2, 4, 2, 5, 69, 6, 8, 7, 55, 85, 8, 67]
df['val_2'] = [8, 89, 8, 5, 7, 57, 8, 57, 4, 8, 74, 65, 55, 74]
re_ind = list(np.where(df['diff_in_min'] >= 300))
re_ind = [np.array([85, 512], dtype='int64')]

只是我想根据 re_ind 位置创建另一个数据框,例如:

first_df = df[0:85] 
another_df = [85:512] 
last_df =  [512:] 

以及我想检查一个条件的每个数据框

count = 0
temp_df = df[:re_ind[0]]
if temp_df['diff_in_min'].sum() > 500:
    count += 1
temp_df = df[re_ind[0]:re_ind[1]]
if temp_df['diff_in_min'].sum() > 500:
    count += 1
if temp_df = df[re_ind[1]:]
if temp_df['diff_in_min'].sum() > 500:
    count += 1

如何使用 for 循环使用现有数据框创建新数据框来做到这一点?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    df['diff_in_min'] >= 300) 创建的组的样本数据中添加累积和,然后聚合sum,比较另一个条件并按sum 计算Trues:

    s = (df['diff_in_min'] >= 300).cumsum()
    
    out = (df['diff_in_min'].groupby(s).sum() > 500).sum()
    print (out)
    2
    

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2016-05-07
      • 2022-07-11
      • 2020-02-22
      • 2021-10-14
      • 2018-12-30
      相关资源
      最近更新 更多