dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv


一、构造
   da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')
    print(da)
    datas=pd.DataFrame(da)
或者直接赋值
df = pd.DataFrame([[1.4, np.nan], [7, -4], [np.nan, np.nan], [0.75, -1.3]], index=[1, 2, 3, 4],
                  columns=['one', 'two'])

二、读值
    # 第2行第2列
    ds =datas.ix[[1]].values[0][1]
    ds = datas.loc[1, 'open']
    # 名为“open"的列
    ds = datas["open"]
    # 选取open列大于4的
    ds = datas[datas["open"]>4]
    # 2-4行,"date","open"列
    ds = datas.loc[1:3,["date","open"]]
    # 第2行
    ds = datas.ix[[1]]
    ds = datas[1:2]

列名

df.columns.values 返回 array 

或list(df.columns)

    
三、赋值
    新增列
    df['one_sort'] = sort_list
    df['one_sort'] = 0
    按条件赋值
    df.one[df.two>0] = 0
    

nan值处理

# 删除包含NaN值得任何行

df.dropna(axis = 0)

#将所有 NaN 值替换为 0

df.fillna(0)

删除列

df_base.drop(['组件负责人_y','部门_y'],axis=1,inplace=True)

删除行

.drop()方法若不设置参数inplace=True
 df_base.drop([0],inplace=True)   

# 筛选在的
df123=df123[df123.License_x.isin(['Apache','BSD','MIT','EPL'])]
# 筛选不在的
Version_list=list(df123.Version)
Version_list.remove('9999.0')
df123 = df123[df123.Version.isin(Version_list)]

 删除重复的

df_p=df_p.drop_duplicates(['姓名'],keep=False)

删除含缺失值的行

df1=df1.dropna(axis = 0,subset =['Version'])

删除含缺失值的列

df1=df1.dropna(axis = 1,subset =[1])

四、转换    
    #第1行转为list

    params=datas.loc[1].tolist()

字典转dataframe

df=pd.DataFrame.from_dict(dict)

交集

df12=pd.merge(df1,df2,on=['Component'],how='inner')

并集

df12=pd.merge(df1,df2,on=['Component'],how='outer')
差集(从df1中过滤df1在df2中存在的行):
df1 = df1.append(df2)
df1 = df1.append(df2)
df1 = df1.drop_duplicates(subset=['Component', 'Version'],keep=False)

移动

# axis指定移动的轴:0为行,1为列

# period:参数指定移动的步幅,可以为正为负

# 整体下移1行

df.shift(axis=0, periods=1)

# 某列下移为新列 ,下移部分为nan

df['open_new']=df['open'].shift(axis=0, periods=1)

五、排序
   # 按某列排序
    df=df.sort_values(by='one',ascending=True)
    
    # 对行进行排序并获取列ID
    # Determine the max value and column name and add as columns to df
    df['Max1'] = df.max(axis=1)
    df['Col_Max1'] = df.idxmax(axis=1)
六、应用    
    将排名赋给列
     # 按某列排序
    df=df.sort_values(by='one',ascending=True)
    sort_list=[]
    df_len =df.iloc[:,0].size
    for i  in range(1,df_len+1):
        sort_list.append(i/df_len)
    print(sort_list)
    df['one_sort'] = sort_list
    左连接

result = pd.merge(left, right, how='left', on=['key1', 'key2'])

  七、打印

#显示所有列

pd.set_option('display.max_columns', None)

#显示所有行

pd.set_option('display.max_rows', None)

八,导出csv

 当有中文时,需要utf-8-sig,才能用excel打开,因为excel能够正确识别用gb2312、gbk、gb18030或utf_8 with BOM 编码的中文,如果是utf_8 no BOM编码的中文文件,excel打开会乱码

csv = df.to_csv(index=False,encoding="utf-8")
return CsvResponse(
    csv,
    status=200,
    headers=generate_download_headers("csv"),
    mimetype="application/csv",
)

猜你喜欢

转载自blog.csdn.net/luansj/article/details/104764117
今日推荐