向数据框架追加多列




我正在创建一个函数,参数是一个数据框架。问题是这个函数使用的数据帧有不同的长度,我需要我的数据帧有特定的长度,以便我的代码工作。
具体来说,我需要我的数据框架有84列,有时我有更少的列(超过需要的84列不是问题)。所以为了让我的代码工作,我需要添加填充为0的列。
我的列名是从0开始的数字。我写了这段代码:

df.insert(len(df.columns), len(df.columns)-1, 0)

但我不确定如何将其放入循环中以获得始终有84列的数据帧?
谢谢。

假设DF有5列:

A   B   C   D   F
0  92  58  84   4  63
1  44  28  58  97  27
2  51  75  76  16  39
3  42  32  85  98  32
4  98  90  65  78  85
5  32  16  31   5  95
6  88  69  23  37  12
7  52  13  57  57  90
8  60  49   5  15  14
9  43  40   1  76  17
[10 rows x 5 columns]

您可以检查数据框架中的列数,并创建以0填充的新列,直到达到84列:

new_cols = [f"column_new_{number}" for number in range(84 - len(df.columns))]
pd.concat([df, pd.DataFrame(columns = new_cols)]).fillna(0)

等于:

Out[164]: 
A     B     C  ...  column_new_76  column_new_77  column_new_78
0  92.0  58.0  84.0  ...              0              0              0
1  44.0  28.0  58.0  ...              0              0              0
2  51.0  75.0  76.0  ...              0              0              0
3  42.0  32.0  85.0  ...              0              0              0
4  98.0  90.0  65.0  ...              0              0              0
5  32.0  16.0  31.0  ...              0              0              0
6  88.0  69.0  23.0  ...              0              0              0
7  52.0  13.0  57.0  ...              0              0              0
8  60.0  49.0   5.0  ...              0              0              0
9  43.0  40.0   1.0  ...              0              0              0
[10 rows x 84 columns]

您可以决定列的prefix可以是什么,我使用"column_new_"只是为了演示。

最新更新