我有很多功能需要在路上进行矢量化和应用功能。而不是手动制作每个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