pandas:我如何按列名称排序数据并添加空列

时间:2014-04-03 14:11:42

标签: python 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 个答案:

答案 0 :(得分: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 :(得分: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值的列。

答案 2 :(得分:1)

sort is deprecated起,

使用sort_index

赞:

df.sort_index(axis=1,inplace=True)

或者:

df=df.sort_index(axis=1)  

两种情况:

print(df)

得到想要的东西。