将带有条件 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 条件和条件函数列表。