【问题标题】:Data Transformation / Preparation数据转换/准备
【发布时间】:2018-05-04 17:15:28
【问题描述】:

我是 Python 的初学者。为了进行数据挖掘,我想转换一个原始数据集:

PurchaseLine01  PurchaseLine02  PurchaseLine03  PurchaseLine04
milk              egg               sausage  
butter            water      
egg               sugar              cake           water

进入这个数据集:

    milk    egg    sausage  butter  sugar   cake    water
1   TRUE    TRUE    TRUE    FALSE   FALSE   FALSE   FALSE
2   FALSE   FALSE   FALSE   TRUE    FALSE   FALSE   TRUE
3   FALSE   TRUE    FALSE   FALSE   TRUE    TRUE    TRUE

在 Python 中有没有简单的方法来完成这个任务?

【问题讨论】:

  • 嗨,这个问题的具体问题是什么?
  • 我真的很想看到一个聪明的解决方案!
  • 嗨@Krukiou。你能处理pd.DataFrames 吗?
  • 嗨@thanasissdr。是的,我可以处理 pd.DataFrame。但是我认为,我需要循环。任何想法都非常感谢。
  • 嗨。事实上,我刚刚发布了我的 DataFrame 的摘录。整个DataFrame有9835行32列。

标签: python data-transform


【解决方案1】:

假设您的数据位于名为 df 的 DataFrame 中。

import pandas as pd
import numpy as np

cols = np.unique(df.stack().values).tolist() 
new_df = pd.DataFrame(columns=cols, index=range(len(df))) 

def get_series(string): 
    return (df == string).T.any() 

for col in cols: 
    new_df[col] = get_series(col) 
new_df

【讨论】:

    【解决方案2】:

    请使用 pandas 中的 get_dummies() 函数以获得预期输出。

    【讨论】:

    • 感谢您的反馈。我已经使用过这个函数:问题是它创建了 2 个属性:例如“PurchaseLine02_water”和“PurchaseLine04_water”,我只想要一个属性(“water”),右边是“TRUE”(或“1”)行。
    猜你喜欢
    • 2017-03-19
    • 2022-01-24
    • 2014-01-17
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2018-03-29
    • 2013-08-23
    相关资源
    最近更新 更多