Python 添加一个新列,其中包含符合条件的所有行的值列表
我有一些数据列表,格式如下:Python 添加一个新列,其中包含符合条件的所有行的值列表,python,pandas,numpy,Python,Pandas,Numpy,我有一些数据列表,格式如下: date value '2017-01-01 01:01:01' 99 '2017-01-02 01:01:01' 98 '2017-01-03 01:01:01' 97 .... '2017-01-30 01:01:01' 95 '2017-01-31 01:01:01' 94 date value list ... ... ... '2017-01-30 0
date value
'2017-01-01 01:01:01' 99
'2017-01-02 01:01:01' 98
'2017-01-03 01:01:01' 97
....
'2017-01-30 01:01:01' 95
'2017-01-31 01:01:01' 94
date value list
...
...
...
'2017-01-30 01:01:01' 95 [99,98,97,95]
'2017-01-31 01:01:01' 94 [99,98,97,95,94]
我想添加一个类似如下的列:
date value
'2017-01-01 01:01:01' 99
'2017-01-02 01:01:01' 98
'2017-01-03 01:01:01' 97
....
'2017-01-30 01:01:01' 95
'2017-01-31 01:01:01' 94
date value list
...
...
...
'2017-01-30 01:01:01' 95 [99,98,97,95]
'2017-01-31 01:01:01' 94 [99,98,97,95,94]
其中,第三列是第二列中的值列表,如果日期在相应行中日期之前的某个时间范围内(例如5天) 像这样的东西应该有用
df = pd.DataFrame({'date': ['2017-01-01 01:01:01', '2017-01-02 01:01:01', '2017-01-03 01:01:01', '2017-01-30 01:01:01', '2017-01-31 01:01:01'],
'value': [99,98,97,95,94]})
df['date'] = pd.to_datetime(df['date'])
def get_list(row):
subset = df[(row['date'] - df['date'] <= pd.to_timedelta('5 days')) & (row['date'] - df['date'] >= pd.to_timedelta('0 days'))]
return str(subset['value'].tolist())
df['list'] = df.apply(get_list, axis=1)
你被否决了,因为你的问题完全模糊。只需单击问题文本编辑器右上角的(?)帮助图标。谢谢Riley!for循环会不会使代码变慢,并有点违背pandas的目的?我编辑了代码,使其更干净,并避免使用for循环