我有一个数据框(使用pandas),其中包含以下字段:
我正在尝试使用“Datesf”作为过滤器将数据框子集化为新的数据帧。子集化应仅使用变量“Datesf”的Datesf.Date()部分,并将新数据帧“df”命名为df_date。
例如>新的子集化数据帧名称> df_02_08_16
1.日期------------价格
2. 02/08/16 17:28--10
3. 02/08/16 17:29--20
4. 02/08/16 17:30--30
我尝试使用以下代码但很明显,我错过了很多内容:
datelist= df["Datesf"].map(pd.Timestamp.date).unique()
for d in datelist:
print d
df.loc[df['Datesf'] == '%s' % d]
我的python技能在这个阶段相对基础。如果我的查询不那么具有挑战性,请原谅我。 非常感谢。 问候, 小号
答案 0 :(得分:1)
这应该做的工作。
import pandas as pd
df = pd.DataFrame([['02/08/16 17:28',1], ['02/08/16 17:28',10],['02/08/16 17:28',100],['03/08/16 17:28',101],['04/08/16 17:28',103]], columns=['Datesf', 'Price'])
df.Datesf = pd.to_datetime(df.Datesf)
unique_dates = df.Datesf.unique()
data_frame_dict = {elem : pd.DataFrame for elem in unique_dates}
for n, key in enumerate(data_frame_dict.keys()):
print ' ==== dataframe %d ======' % n
data_frame_dict[key] = df[:][df.Datesf == key]
print data_frame_dict[key]
data_frame_dict[key].to_csv('%s.csv'%str(key))