根据唯一列值从现有数据框动态创建新的Pandas数据框

时间:2018-05-15 08:38:15

标签: python pandas loops dataframe

我有很多功能需要在路上进行矢量化和应用功能。而不是手动制作每个DF的副本,过滤,然后应用我的各种函数,我宁愿根据指定列包含的值动态创建新的DF。

以下面的代码为例。我想采用B列并创建三个新的数据帧。 df_A,df_B,df_C。

我已经搜索了几十个帖子,但这些是我能找到的最接近的帖子: Create new dataframe in pandas with dynamic names also add new column 我无法让这个工作,在这一点上抛出错误

dict_of_df[key_name] = copy.deepcopy(df)
TypeError: unhashable type: 'numpy.ndarray'

https://datascience.stackexchange.com/questions/29825/create-new-data-frames-from-existing-data-frame-based-on-unique-column-values 我不想打印列表,我想要实际的数据帧。

这是我尝试组合的一些不同的代码,但是使用范围函数抛出错误,虽然我不确定为什么......

import pandas as pd

data = {'Column A': [100,200,300,400,500],
        'Column B': ["A","A","B","B","C"]}
df = pd.DataFrame(data, columns=['Column A','Column B'])

df

for i in range(len(df['Column B'].unique())):
    for item in df['Column B'].unique():
        new_df[i] = df[df['Column B'] == item]
new_df

ValueError: Wrong number of items passed 2, placement implies 1

编辑:根据@jezrael在这篇文章中提供的链接(重复),他在该帖子中的解决方案满足了需求:

for i, x in df.groupby('Column B'):
    globals()['dataframe' + i] = x 

0 个答案:

没有答案