我有一个包含许多列的数据框。
df=pd.DataFrame(data=np.random.rand(100,1000))
我需要有两个特定的列,第一列为[793]
和[642]
,而其他列的顺序无关紧要。
我可以做
df.columns=[793,642,...the rest...]
但是,我的列以及参考列都是可变的。
答案 0 :(得分:3)
对列表中未指定的所有列使用difference
,对于新的列名称使用前缀列表L
,最后的更改按[]
按子集排序:
df=pd.DataFrame(data=np.random.rand(100,1000))
L = [793, 642]
cols = L + df.columns.difference(L).tolist()
#another solution
#cols = np.concatenate([L, df.columns.difference(L)])
#list comprehension solution
#cols = L + [x for x in df.columns if not x in L]
df = df[cols]
print (df.head(2))
793 642 0 1 2 3 4 \
0 0.462103 0.811223 0.491396 0.701752 0.494450 0.352717 0.345460
1 0.840597 0.852080 0.681095 0.014459 0.963252 0.972862 0.490964
5 6 7 ... 990 991 992 \
0 0.718141 0.199168 0.379924 ... 0.279972 0.963898 0.987907
1 0.151226 0.625833 0.428249 ... 0.069179 0.045112 0.328453
993 994 995 996 997 998 999
0 0.402805 0.243648 0.624790 0.864440 0.653621 0.066524 0.072025
1 0.894080 0.451285 0.538485 0.834018 0.926311 0.032849 0.095636
[2 rows x 1000 columns]