英文:
Create new columns from information on rows in Python
问题
以下是要翻译的内容:
所以我有一个具有以下结构的Pandas数据框:
| 客户ID | 产品 | 数量 |
|:---- |:------:| -----:|
| 01 | 苹果 | 2 |
| 01 | 橙子 | 3 |
| 01 | 香蕉 | 1 |
| 02 | 苹果 | 4 |
| 02 | 香蕉 | 2 |
并且希望将此数据框转换为如下所示:
| 客户ID | 产品_苹果 | 数量_苹果 | 产品_橙子 | 数量_橙子 | 产品_香蕉 | 数量_香蕉 |
|:---- |:------:|:------: |:------:|:------:|:------:|-----:|
| 01 | 1 | 2 | 1 | 3 | 1 | 1 |
| 02 | 1 | 4 | 0 | 0 | 1 | 2 |
其中以“产品”开头的列是二进制变量。
这个转换的Python代码是什么?
英文:
So I have a Pandas dataframe with the following structure:
ClientId | Product | Quantity |
---|---|---|
01 | Apples | 2 |
01 | Oranges | 3 |
01 | Bananas | 1 |
02 | Apples | 4 |
02 | Bananas | 2 |
and would like to get this df to look like:
ClientId | Product_Apples | Quantity_Apples | Product_Oranges | Quantity_Oranges | Product_Bananas | Quantity_Bananas |
---|---|---|---|---|---|---|
01 | 1 | 2 | 1 | 3 | 1 | 1 |
02 | 1 | 4 | 0 | 0 | 1 | 2 |
where the columns starting with Product are binary variables.
What would be the Python code for this transformation?
答案1
得分: 2
假设您的数据集是一个Pandas数据帧,您可以尝试以下方法:
import pandas as pd
df = pd.DataFrame({
'ClientID': ['01']*3 + ['02']*2,
'Product': ['Apples', 'Oranges', 'Bananas', 'Apples', 'Bananas'],
'Quantity': [2, 3, 1, 4, 2]
})
df['product_cnt'] = 1
# 解决方案 1
df.pivot(index='ClientID', columns='Product', values=['Quantity', 'product_cnt']).fillna(0)
# 解决方案 2
df_products = df.pivot(index='ClientID', columns='Product', values='product_cnt').fillna(0).add_prefix('Product_')
df_qty = df.pivot(index='ClientID', columns='Product', values='Quantity').fillna(0).add_prefix('Quantity_')
df_products.merge(df_qty, on='ClientID', how='left')
这是您提供的代码的翻译部分。
英文:
Assuming your dataset is a pandas dataframe, you can try this:
import pandas as pd
df = pd.DataFrame({
'ClientID': ['01']*3 + ['02']*2,
'Product': ['Apples', 'Oranges', 'Bananas', 'Apples', 'Bananas'],
'Quantity': [2, 3, 1, 4, 2]
})
df['product_cnt'] = 1
# solution 1
df.pivot(index='ClientID', columns='Product', values=['Quantity', 'product_cnt']).fillna(0)
# solution 2
df_products = df.pivot(index='ClientID', columns='Product', values='product_cnt').fillna(0).add_prefix('Product_')
df_qty = df.pivot(index='ClientID', columns='Product', values='Quantity').fillna(0).add_prefix('Quantity_')
df_products.merge(df_qty, on='ClientID', how='left')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论