可以使用行描绘符来拆分列

时间:2018-03-07 00:38:28

标签: python pandas dataframe

我有两个列数据帧(时间,深度)。我希望在时间列中查询等于-999999.000的值,然后在每次出现此值时拆分列,并将此行下方的数据移动到新的df。我有一个笨重的灵魂:

time depth  
   3.60061646      0.893399119  
   2.60061646      0.893977463  
   1.60061646      0.894550025  
  0.600616455      0.895119905    
   0.00000000      0.895459890  
  -999999.000      -999999.000  
  3.60061646      0.893399119  
   2.60061646      0.893977463  
   1.60061646      0.894550025  
  0.600616455      0.895119905    
   0.00000000      0.895459890  
  -999999.000      -999999.000
  3.60061646      0.893399119  
   2.60061646      0.893977463  
   1.60061646      0.894550025  
  0.600616455      0.895119905    
   0.00000000      0.895459890  
  -999999.000      -999999.000

df_curve.loc[df_curve['time'] == -999999.000]  
df1 = df_curve.iloc[:6]  
df2 = df_curve.iloc[7:12] 
df3 = df_curve.iloc[13:18] 

有更优雅的方法吗?实际上我的数据集要大得多。

1 个答案:

答案 0 :(得分:0)

这与您拥有的相近,但稍微更加自动化。

idx = df['time'][df['time'] == -999999].index[0]

df1 = df.iloc[:idx+1]
df2 = df.iloc[idx+1:]

如果需要多次出现值,请使用字典:

idx = [0] + list(df['time'][df['time'] == -999999].index) + [df.index[-1]+1]
dfs = {k: df.iloc[i:j] for k, (i, j) in enumerate(zip(idx, idx[1:]), 1)}