如何在熊猫/python中的行标题中通过部分搜索对数据集进行排序
Posted
技术标签:
【中文标题】如何在熊猫/python中的行标题中通过部分搜索对数据集进行排序【英文标题】:How to sort a dataset by partial search within a row's title in pandas/python 【发布时间】:2019-09-28 15:06:50 【问题描述】:我有一个大型数据集,只能按其描述进行排序。描述通过将产品命名为:ProductVariantSpesification 来描述产品。我想整理 Variant 并创建新数据集,仅包括具有相同 Variant 的数据集。
我试过了:
400_variants = df[df[Description].str.contains("400")]
它会是什么样子:
import pandas as pd
df = pd.read_excel(r'raw_data.xlsx', header = 0)
#Some code
df.to_excel(r'400.xlsx')
我是这样开始的:
Index Description Quantity Date
1 Ketchup400J 5 5/10/2019
2 Ketchup600J 4 5/11/2019
3 Ketchup800U 6 5/12/2019
4 Ketchup400U 7 5/13/2019
5 Ketchup600J 8 5/14/2019
6 Ketchup400U 9 5/15/2019
7 Ketchup800i 5 5/16/2019
8 … … …
并希望 400 变体的输出为:
Index Description Quantity Date
1 Ketchup400J 5 5/10/2019
2 Ketchup400U 7 5/13/2019
3 Ketchup400U 9 5/15/2019
【问题讨论】:
【参考方案1】:检查str.findall
和groupby
for x , y in df.groupby(df.Description.str.findall(r'[0-9]+').str[0]):
print(y)
y.to_excel(str(x)+'.xlsx')
Index Description Quantity Date
0 1 Ketchup400J 5 5/10/2019
3 4 Ketchup400U 7 5/13/2019
5 6 Ketchup400U 9 5/15/2019
Index Description Quantity Date
1 2 Ketchup600J 4 5/11/2019
4 5 Ketchup600J 8 5/14/2019
Index Description Quantity Date
2 3 Ketchup800U 6 5/12/2019
6 7 Ketchup800i 5 5/16/2019
更新
d=x : y for x , y in df.groupby(df.Description.str.findall(r'[0-9]+').str[0])
d['400']
【讨论】:
能否重新设置新列表的索引? @aosa 添加y.reset_index(drop=True).to_excel(str(x)+'.xlsx')
谢谢!然后如何在 for 循环之后检索列表之一?
@aosa 我不确定你的意思,想提出一个新问题吗?
我想稍后在代码中使用不同的 y 列表。 for 循环后的简单命令可以是 print(y[400]) 或 df2 = y[600]....【参考方案2】:
试试str.contains
>>> import pandas as pd
>>> df = pd.DataFrame('Description':['Ketchup400J', 'Ketchup400K', 'Mustard400J', 'Ketchup300K','Mustard300K'],'Quantity':range(5),'Date':pd.date_range(start='1/1/2019',periods=5, freq='D'))
>>> df
Description Quantity Date
0 Ketchup400J 0 2019-01-01
1 Ketchup400K 1 2019-01-02
2 Mustard400J 2 2019-01-03
3 Ketchup300K 3 2019-01-04
4 Mustard300K 4 2019-01-05
>>> df[df.Description.str.contains('400')]
Description Quantity Date
0 Ketchup400J 0 2019-01-01
1 Ketchup400K 1 2019-01-02
2 Mustard400J 2 2019-01-03
【讨论】:
以上是关于如何在熊猫/python中的行标题中通过部分搜索对数据集进行排序的主要内容,如果未能解决你的问题,请参考以下文章