<p>为此,您可以使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd1>}</a>,这正是您所需要的:</p>
<pre><code># show example data
print(df)
day product order
0 2010-01-01 "150ml Mask" 9
1 2010-01-02 "230ml Lotion" 27
2 2010-01-03 "600ml Shampoo" 33
3 2010-01-04 "250ml Mask" 12
4 2010-01-05 "330ml Lotion" 24
5 2010-01-06 "400ml Shampoo" 13
# split product column and keep only product name
df["product"] = df["product"].str.split(expand=True)[1]
# groupby product
products = df.groupby("product")
# print product and corresponding product df
for product, product_df in products:
print(product)
print(product_df)
Lotion
day product order
1 2010-01-02 Lotion 27
4 2010-01-05 Lotion 24
Mask
day product order
0 2010-01-01 Mask 9
3 2010-01-04 Mask 12
Shampoo
day product order
2 2010-01-03 Shampoo 33
5 2010-01-06 Shampoo 13
</code></pre>
<p>为了单独访问每个子组,可以使用与<code>subtable</code>函数相对应的<code>get_group</code>:</p>
^{pr2}$
<p>最后,要获得一个字典中的所有子数据帧,可以循环<code>products</code>并删除product列本身:</p>
<pre><code>df_dict = {product: product_df.drop("product", axis=1)
for product, product_df in products}
print(df_dict["Mask"])
day order
0 2010-01-01 9
3 2010-01-04 12
</code></pre>