Pandas Dataframe根据现有数据添加列

问题描述 投票:0回答:2

我有一个具有100列的列和1000列的行的数据框,但是基本结构是

Index 0 1 2 0 AAA NaN AAA 1 NaN BBB NaN 2 NaN NaN CCC 3 DDD DDD DDD

我想添加两个新列,一个将是and id,它们将等于每行中的第一个值,第二个将是每行中的值的计数。看起来像这样。为了清楚起见,所有行将始终具有相同的值。

Index id count 0 1 2 0 AAA 2 AAA NaN AAA 1 BBB 1 NaN BBB NaN 2 CCC 1 NaN NaN CCC 3 DDD 3 DDD DDD DDD

非常感谢您提供解决方法。谢谢

python pandas dataframe
2个回答
0
投票

这应该工作。

df['id'] = df.bfill(axis=1).iloc[:, 0].fillna('All NANs')
df['count'] = df.drop(columns=["id"]).notnull().sum(axis=1)

保持列的顺序:

df = df[list(df.columns[-2:]) + list(df.columns[:-2])]

-1
投票
    # Create Dataframe
    test_df = pd.DataFrame([['AAA',np.nan,'AAA'], [np.nan,'BBB',np.nan], [np.nan,np.nan, 'CCC'], ['DDD','DDD','DDD']])
    test_df['count'] = test_df.notna().sum(axis=1)
    test_df['id'] = test_df[0]
© www.soinside.com 2019 - 2024. All rights reserved.