使用列表中的值以基于现有数据框创建一些新的数据框
Posted
技术标签:
【中文标题】使用列表中的值以基于现有数据框创建一些新的数据框【英文标题】:Use values from list in order to create few new Dataframe based on existing one 【发布时间】:2021-10-31 00:28:07 【问题描述】:我当前的 DF 如下所示
x y z x c name status
1 2 3 2 5 Jon Work
1 2 5 4 5 Adam Work
9 7 3 9 5 Adam Holiday
3 2 3 4 5 Anna Work
1 4 6 8 5 Anna Work
4 1 6 8 5 Kate Off
2 1 6 1 5 Jon Off
我的具有特定值的列表如下所示:
name = [Jon, Adam]
status = [Off, Work]
我需要使用这些列表为“状态”列表中的所有唯一元素创建新的数据框。所以它应该如下所示:
df_off:
x y z x c name status
2 1 6 1 5 Jon Off
只有一个值,因为名称 Kate 不在列表名称中
df_工作:
x y z x c name status
1 2 3 2 5 Jon Work
1 2 5 4 5 Adam Work
在第二个 DF 中没有“Anna”,因为她不在列表“name”中。
我希望它很清楚。你知道我该如何解决这个问题吗?
注意 托马斯
【问题讨论】:
【参考方案1】:第一部分,使用以下方法过滤您的数据:
name = ['Jon', 'Adam']
status = ['Off', 'Work']
df[df['name'].isin(name)&df['status'].isin(status)]
然后使用groupby
并将输出转换为字典:
conditions = df['name'].isin(name)&df['status'].isin(status)
dfs = 'df_%s' % k:v for k,v in df[conditions].groupby('status')
然后使用以下命令访问您的数据框:
>>> dfs['df_Work']
x y z x.1 c name status
0 1 2 3 2 5 Jon Work
1 1 2 5 4 5 Adam Work
您甚至可以使用多个组:
dfs = 'df_%s_%s' % k:v for k,v in df.groupby(['name', 'status'])
dfs['df_Adam_Work']
如果您的目标是保存子帧:
for groupname, df in df[conditions].groupby('status'):
df.to_excel(f'df_groupname.xlsx')
【讨论】:
看起来很棒!谢谢!您是否知道如何将其保存到名为 df_work 和 df_off 的 excel 中? 我正在尝试使用:for i in status: pd.DataFrame(dfs[f'i']).to_excel[f'name i.xlsx'] 但我收到错误TypeError:“方法”对象不可下标以上是关于使用列表中的值以基于现有数据框创建一些新的数据框的主要内容,如果未能解决你的问题,请参考以下文章
遍历 pandas 数据框中的行并匹配列表中的元组并创建一个新的 df 列
在数据表或连续表单视图中的表单上,我们如何将第二个组合框中的可能值基于第一个组合框中选择的值?
如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]