pandas df在列中选择唯一值,然后为每个唯一值创建单独的df

时间:2018-11-09 18:18:27

标签: python pandas

我有一个包含12个月数据的数据框(我有一个日期列)。我想根据日期列中的唯一值将该数据帧分为12个数据帧。每个月数据框将再更新1个月,因此需要花费最近的12个月

1 个答案:

答案 0 :(得分:0)

在Pandas中的DataFrame上执行操作时,它不会更改原始DataFrame,而是传递新的DataFrame,并将更改应用为返回值。因此,如果这样做,例如:

df = pd.DataFrame.from_csv('data.csv')
new_df = df[df.name == 'John']

df new_df 是完全不同的DataFrame,其中 new_df df 的子集。因此,要实现所需的功能,只需按月过滤原始DataFrame。值得注意的是,如果日期列的类型为DateTime,则可以使用 .dt 来执行特定于日期时间的操作,例如:

df[df.dt.month == 1]

考虑到这一点,您可以执行类似的操作(假设您原来的DataFrame被称为 df ):

monthly_array = list()
for i in range(1,13):
    monthly_array[i-1] = df[df.date.dt.month == i]