在python里进行数据处理时对数据框经常要做一些操作,总结一些简单功能实现的语句。
- pandas dataframe取列名,可用于判断某列名是否在列名列表里。
DataFrame.columns.values.tolist()
- pandas按某列指定字符顺序给行排序。
word_order=['b','d','a','c']
df['word'] = df['word'].astype('category')
# 当指定顺序字符列表里的字符种类比df中的多时用set_categories,否则用reorder_catgories即可
df['word'].cat.set_categories(word_order, inplace=True)
df.sort_values(by=["word","num"],inplace=True)
- pandas按某指定列名顺序给列重排序。
column_order=['cd','ac','bd','da']
df = df[column_order]
- pandas对行去重。
df.drop_duplicates(['colname1','colname2','colname3'], 'last')
- numpy和pandas配合使用,读取一个每列为一组特征的csv文件进行数据整形。
df = pd.read_csv("xxx.csv")
need_column=['S1','S5','S6','S9']
data_arr=data.loc[:need_column].T.values
- 接上条,分割数据为3部分,每部分后面补5个0。注意hsplit函数(col方向),vsplit函数 (row方向),视情况使用。
data_split = np.hsplit(data_arr, 3)
data_fill=np.concatenate((data_split[0],np.zeros((len(data_arr),5)),data_split[1],np.zeros((len(data_arr),5)),data_split[2],np.zeros((len(data_arr),5))),axis=1)
- 双重索引。
subset.index=pd.MultiIndex.from_arrays([np.full(subset.shape[0], i),subset["a"]+":"+subset['b'].astype("str")], names=['num','id'])
subset = subset.set_index(['a','b'])