我正在创建一个函数,参数是一个数据框架。问题是这个函数使用的数据帧有不同的长度,我需要我的数据帧有特定的长度,以便我的代码工作。
具体来说,我需要我的数据框架有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_"只是为了演示。