我有一个具有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
非常感谢您提供解决方法。谢谢
这应该工作。
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])]
# 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]