python - 获取新列之前的列中的元素

标签 python pandas dataframe

我正在尝试从“数据”列中收集项目,该列位于“分钟”列中收集的数据之前,并创建新列。请参阅pic

这是数据(使用 pd.read_csv 导入):

time,data
12/15/18 01:10 AM,130352.146180556
12/16/18 01:45 AM,130355.219097222
12/17/18 01:47 AM,130358.223263889
12/18/18 02:15 AM,130361.281701389
12/19/18 03:15 AM,130364.406597222
12/20/18 03:25 AM,130352.427430556
12/21/18 03:27 AM,130355.431597222
12/22/18 05:18 AM,130358.663541667
12/23/18 06:44 AM,130361.842430556
12/24/18 07:19 AM,130364.915243056
12/25/18 07:33 AM,130352.944409722
12/26/18 07:50 AM,130355.979826389
12/27/18 09:13 AM,130359.153472222
12/28/18 11:53 AM,130362.4871875
12/29/18 01:23 PM,130365.673263889
12/30/18 02:17 PM,130353.785763889
12/31/18 02:23 PM,130356.798263889
01/01/19 04:41 PM,130360.085763889
01/02/19 05:01 PM,130363.128125

和我的代码:

import pandas as pd
import numpy as np
from scipy import signal
from scipy.signal import argrelextrema
import datetime
diff=pd.DataFrame()


df=pd.read_csv('saw_data2.csv')
df['time']=pd.to_datetime(df['time'])

print(df.head())
n=2 # number of points to be checked before and after
# Find local peaks
df['min'] = df.iloc[argrelextrema(df.data.values, np.less_equal, order=n)[0]]['data']

如果您绘制数据,您会发现它类似于锯齿。我在“min”中获得的“data”之前的元素是我想要放入新列 df['new_col'] 中的元素。

我尝试过很多事情,例如,

df['new_col']=df.index.get_loc(df['min'].df['data'])

并且,

df['new_col']=df['min'].shift() #obviously wrong

最佳答案

IIUC,您可以在选择值以 min 为单位的行之前执行 shift:

df['new_col'] = df.shift().loc[df['min'].notna(), 'data']
print (df)
                 time           data            min        new_col
0   12/15/18 01:10 AM  130352.146181  130352.146181            NaN
1   12/16/18 01:45 AM  130355.219097            NaN            NaN
2   12/17/18 01:47 AM  130358.223264            NaN            NaN
3   12/18/18 02:15 AM  130361.281701            NaN            NaN
4   12/19/18 03:15 AM  130364.406597            NaN            NaN
5   12/20/18 03:25 AM  130352.427431  130352.427431  130364.406597
6   12/21/18 03:27 AM  130355.431597            NaN            NaN
7   12/22/18 05:18 AM  130358.663542            NaN            NaN
8   12/23/18 06:44 AM  130361.842431            NaN            NaN
9   12/24/18 07:19 AM  130364.915243            NaN            NaN
10  12/25/18 07:33 AM  130352.944410  130352.944410  130364.915243
11  12/26/18 07:50 AM  130355.979826            NaN            NaN
12  12/27/18 09:13 AM  130359.153472            NaN            NaN
13  12/28/18 11:53 AM  130362.487187            NaN            NaN
14  12/29/18 01:23 PM  130365.673264            NaN            NaN
15  12/30/18 02:17 PM  130353.785764  130353.785764  130365.673264
16  12/31/18 02:23 PM  130356.798264            NaN            NaN
17  01/01/19 04:41 PM  130360.085764            NaN            NaN
18  01/02/19 05:01 PM  130363.128125            NaN            NaN

关于python - 获取新列之前的列中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59777979/

相关文章:

python - Pandas 合并两个具有相同结构的数据框

python - 如何离散化 pandas DataFrame 中的值并转换为二进制矩阵?

javascript - Bokeh:鼠标移动或单击的 CustomJS 回调

python - 使用 pd.read_clipboard 复制数据框时如何处理自定义命名索引?

python - 在 Pandas 中使用逗号将整列整数转换为千位分隔的字符串

python - Pandas :更改具有多级列的数据框中的特定列名

python - 是否可以在不使用 co_code 的情况下获取 python 字节码?

python - 在 Windows 上使用 Python 中的 Selenium 和 GhostDriver

python - 如何测试 django 缓存?

python - 是否有用于创建茎叶图的 Pandas 功能