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

一、构造    da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')     print(da)     datas=pd.DataFrame(da) 2、直接赋值 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'])

3、Series转换为DataFrame

一种方法是通过字典转
metric = df.loc[0][index]
metric_dict = {'metric_name':metric.index,'ereport_pie_y':metric.values}
data = pd.DataFrame(metric_dict)

另外一种直接通过Series的

to_frame()```
方法
df=metric.to_frame()

如果要index也做为一列,可以用
df = df.reset_index()

二、读值     # 第2行第2列     ds =datas.ix[[1]].values[0][1]     ds = datas.loc[1, 'open']

    #取第二行

    ds = datas.loc[2]     # 名为“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)

 

删除列

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


删除行

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

```python
# 筛选在的
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)]```


 删除重复的

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


删除含缺失值的行

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


删除含缺失值的列

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

 

四、转换         #第1行转为list

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

字典转dataframe

```python
df=pd.DataFrame.from_dict(dict)```


交集

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


并集

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


```python
差集(从df1中过滤df1在df2中存在的行):```


```python
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

```python
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     左连接

```python
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",
)```



![](https://mutouzuo.oss-cn-hangzhou.aliyuncs.com/my/mudouzuo1.png)
posted @   木头左  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示