pandas: 如何按列名排序数据框并添加空列
我的数据框看起来是这样的
df =
1324 1322 1323 1326 1327 1328 1329
278650 2.15 2.15 2.15 2.15 2.15 2.15
535947 2.15 2.15 2.15 2.15 2.15 2.15
我想把它们排序成下面这样
1322 1323 1324 1326 1327 1328 1329
278650 2.15 2.15 2.15 2.15 2.15 2.15
535947 2.15 2.15 2.15 2.15 2.15 2.15
我尝试使用pandas的排序功能,sort和sort_index
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_index.html
但是我没弄明白它是怎么工作的
有没有什么有效的方法可以做到这一点?
另外,列中有缺失值
1322, 1323, 1324, 缺失, 1326, 1327, 1328, 1329
所以我想在有缺失值的地方添加一个空列。
在这种情况下
1322 1323 1324 1325 1326 1327 1328 1329
278650 2.15 2.15 2.15 2.15 2.15 2.15
535947 2.15 2.15 2.15 2.15 2.15 2.15
注意,列的边界是1322到1373。
我通过这样解决了第一个问题
weeks = range(1322,1374)
df = df.loc[:,weeks]
3 个回答
1
现在因为sort
这个功能已经不再推荐使用,
所以要用sort_index
:
比如:
df.sort_index(axis=1,inplace=True)
或者:
df=df.sort_index(axis=1)
这两种情况:
print(df)
都能达到想要的效果。
1
关于排序:
http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.sort.html
关于添加新列:
可以使用原来的 df1 索引来创建一个新的系列:
df1['e'] = Series(np.random.randn(sLength), index=df1.index)
1
试试这个:
df.sort_index(axis = 1,inplace = True) ##Sorts the DataFrame by columns (axis = 1) in place
来解决排序的问题,然后试试这个:
import pandas as pd
desired_cols = range(1322,1374)
for col in desired_cols:
if col not in df.columns:
df[col] = pd.Series([])
else:
pass
来添加那些有 np.nan
值的列。