【问题标题】:How to resize dataframe by dropping NaN in individual cells?如何通过在单个单元格中删除 NaN 来调整数据框的大小?
【发布时间】:2019-03-03 08:57:45
【问题描述】:

我有一个看起来像这样的 df:

column1   column2    column3   column4
1            2       nan          4
1            2        3           nan
1            2       nan          nan
1            2       nan          nan

如何重塑数据框,为每个带有 NaN 的单元格删除它,如果该列具有相同的值,则只采用它的一个实例?

新的 df 应该是这样的;

column1   column2    column3   column4
1            2        3          4

我有大约 500 列这样的参差不齐的数据。

编辑:

我使用这行代码将带有参差不齐的数据的值移动到一行。

df = df.apply(lambda x: pd.Series(x.dropna().values))

新的 df 看起来像这样:

column1   column2    column3   column4
1            2        3            4
1            2       nan          nan
1            2       nan          nan
1            2       nan          nan

然后我删除重复项:

df = df.drop_duplicates()

df 现在看起来像这样:

 column1   column2    column3   column4
    1            2        3            4
    1            2       nan          nan

不知道为什么 Nan 在这一点之后没有下降,但行正在下降:

pivoted_df = pivoted_df.dropna()

【问题讨论】:

    标签: python python-3.x pandas nan


    【解决方案1】:

    您可以通过ffill 转发填充缺失值,删除NaNs 行并删除重复项:

    df = df.ffill().dropna().drop_duplicates()
    print (df)
       column1  column2  column3  column4
    1        1        2      3.0      4.0
    

    或者如果需要某些列指定的每个组的第一个非缺失值:

    df = df.groupby(['column1','column2'], as_index=False).first()
    print (df)
    
       column1  column2  column3  column4
    0        1        2      3.0      4.0
    

    【讨论】:

    • df = df.ffill().dropna().drop_duplicates() 正在删除我所有的行。我只剩下列
    • @RustyShackleford - 数据中似乎至少只有一个 NaN 列,因此请尝试通过 df.dropna(how='all', axis=1).dropna().ffill().drop_duplicates() 删除此列。
    • 但是如果没有minimal, complete, and verifiable example 就很难回答,而且我想创建它很复杂:(
    • @jezrael 这个问题被 (stackoverflow.com/questions/43119503/…) 欺骗了
    • @SandeepKadapa - 不确定,是否可以使用 500 列。
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多