【问题标题】:Pandas boolean statements to clean up dataset用于清理数据集的 Pandas 布尔语句
【发布时间】:2019-04-17 22:10:33
【问题描述】:

我正在处理一些需要清理的混乱 EPA 数据。它看起来像这样:

id   1   value1   2    value2   3   value3
1    ph    7     temp   44     cond  3
2    temp  45    cond   5      ph    5    
3    temp  12    ph     5      cond    8  

我想创建新列phtempalkcond 等,同时保持与行中的列对应的每个值。预期输出如下所示:

id   ph   temp   cond
1    7    44     3
2    5    45     5   
3    5    12     8  

【问题讨论】:

  • 预期输出?
  • 看看pandas.pivot。如果你不能一次得到它,为你的每一列获取一个列/值,然后将它们全部连接在一起

标签: python pandas dataframe


【解决方案1】:

让我们试试吧:

df1 = df.set_index('id')

df1.columns = ['Col'+i if i.isdigit() else i for i in df1.columns]

df2 = df1.reset_index()
pd.wide_to_long(df2, ['Col','value'],'id','num','','.+').reset_index(level=1, drop=True).set_index('Col', append=True)['value'].unstack()

输出:

Col  cond  ph  temp
id                 
1       3   7    44
2       5   5    45
3       8   5    12

【讨论】:

    【解决方案2】:
    import pandas as pd
    
    # Initialize example input dataframe
    col_names = ['id', '1', 'value1', '2', 'value2', '3', 'value3']
    data = [
        [1, 'ph', 7, 'temp', 44, 'cond', 3],
        [2, 'temp', 45, 'cond', 5, 'ph', 5],
        [3, 'temp', 12, 'ph', 5, 'cond', 8],
    ]
    df = pd.DataFrame(data, columns=col_names)
    
    # Reshape dataframe
    df2 = pd.concat([
        df[['id', '1', 'value1']].rename(columns={'1': 'parameter', 'value1': 'value'}),
        df[['id', '2', 'value2']].rename(columns={'2': 'parameter', 'value2': 'value'}),
        df[['id', '3', 'value3']].rename(columns={'3': 'parameter', 'value3': 'value'}),
    ])
    df2 = df2.pivot(index='id', columns='parameter', values='value')
    

    给出结果:

    In [3]: df2
    Out[3]:
    parameter  cond  ph  temp
    id
    1             3   7    44
    2             5   5    45
    3             8   5    12
    

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 1970-01-01
      • 2018-06-15
      • 2015-12-21
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      相关资源
      最近更新 更多