将带有条件 IF 的 groupby 元素/列表导出到 Excel 工作表

Posted

技术标签:

【中文标题】将带有条件 IF 的 groupby 元素/列表导出到 Excel 工作表【英文标题】:export of a groupby element/list with a condition IF to an excel sheet 【发布时间】:2019-03-14 16:28:15 【问题描述】:

我想检查一个“工作表”,如果它包含的内容超过例如如果有 250 个条目,我将创建一个新的 excel 表并将其保存在一个新文件中。

例如:

Leading-Zip:   Adresses that contains the Leading-Zip:
--------------------------

74                  400
73                  200   
72                   50

我使用这个命令来获取我想要分组的条目数:

worksheet['Zip-code-region'].value_counts()

我必须选择哪种方式来做到这一点? 我必须创建一个列表吗?或者我可以使用带有 for 循环的命令吗?

尝试更新: 我正在导入一个 excel 文件:

xel = pd.read_excel(r'C:test.xlsx', sheet_name = None)

比我选择一张纸:

worksheet = xel[ws]

现在我添加一个新列 'leading-zip' 切片邮政编码:

worksheet['leading-zip']=worksheet['zip-code'].astype(str).str[:2].astype(int)

从那个'leading-zip'我想迭代每个'leading-zip' - 计算其中包含的地址,如果它们超过250,我想创建一个新的excel文件。

【问题讨论】:

请提供mcve,同时查看how to make good pandas example 你有哪个版本的熊猫? pd.__version__ ?如果0.24 检查worksheet[worksheet.Zip-code-region.isin(worksheet.groupby('Zip-code-region')['Zip-code-region'].value_counts().loc[lambda x : x>250].droplevel(0).index)] 我安装的是0.24.1的 嗨 anky,这行得通 - 谢谢。在我的生活中,我从来没有得出这个结论。现在我如何在 excel 文件中写入选定的连衣裙?我想使用前导压缩将其添加到文件名中。比如:我在前导压缩包中有 500 多个地址:74 -> 文件名:zip-74.xlsx --- 还有一个问题:它可以是各种前导压缩包,有超过 500 个地址。 您已经有了选择,现在只需将其导出到 excel 【参考方案1】:

您可以过滤高于阈值的value_counts 结果,然后循环遍历它们的索引,将原始 DataFrame 中的相应子集保存为单独的 Excel 工作表:

import xlsxwriter
import numpy as np
import pandas as pd

df = pd.DataFrame('zip': np.random.randint(10, 100, 1000))

z = df['zip'].value_counts()

threshold = 15

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
for i in z[z >= threshold].index:
    df[df['zip'] == i].to_excel(writer, str(i))

# save the remaining data as worksheet 'other':
df[df['zip'].isin(z[z < threshold].index)].to_excel(writer, 'other')

writer.save()

【讨论】:

不,当然你不需要随机使用,我这里只是生成一些数据来演示它是如何工作的。只需使用您自己的 DataFrame 即可 试过了 - 但它不起作用。错误:NameError:未定义名称“np” 你可以用import numpy as np修复它(不过我这里只使用numpy来生成随机数据) numpy 不是lumpy? 那么您遇到了哪个错误?我已在上面的代码中添加了所有必需的输入(并使用新启动的内核进行了测试),因此您可以尝试执行整个块

以上是关于将带有条件 IF 的 groupby 元素/列表导出到 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 和 async.waterfall 带有 if 条件和条件函数列表。

vue 条件渲染与列表渲染

带有if条件的生成器上的python列表理解

在带有 Groupby 的 Pandas 中:从以另一列为条件的列中分配一个值

创建一个互斥的代码路径列表

Java 8 列表处理 - 有条件地添加元素