1.如何利用现有数据构建dataframe格式数据
符合上图中的数据均可通过pd.DataFrame函数转换成dataframe数据格式
如raw_data是列表组成的列表:
raw_data=json.load(open('python_search','r+',encoding='utf-8'))
data=pd.DataFrame(raw_data,columns=['companyShortName','city',"companySize"])
2.如何在dataframe指定位置新添加一列或者多列数据
data=raw_data2.groupby('Year', as_index=False).agg(aggregations)
col_name = data.columns.tolist()
col_name.insert(0,'station_name')#在第一列位置添加station_name
col_name.insert(1,'province')#在第二列位置添加province
col_name.insert(2,'lat')#在第三列位置添加lat
col_name.insert(3,'lon')#在第四列位置添加lon
temp_list=[station_name for i in range(len(data))]
data["station_name"]=temp_list#赋值
temp_list=[province for i in range(len(data))]
data["province"]=temp_list#赋值
temp_list=[lat for i in range(len(data))]
data["lat"]=temp_list#赋值
temp_list=[lon for i in range(len(data))]
data["lon"]=temp_list#赋值
data=data.reindex(columns=col_name)#按规定的顺序对各列按列名排序
详见https://www.cnblogs.com/rrttp/p/8108188.html
在这里我赋值的方式太蠢了,构造列表赋值给列,后来又发现一种厉害的,就是下面的3
3.如何在dataframe新添加一列或者多列数据并根据条件赋值
temp_list=[station_name for i in range(len(data))]
data["station_name"]=temp_list#赋值
上面的蠢哭的方式完全可以用下面一句优雅的方式搞定:
data['station_name']=np.where(True,station_name,0)
或者:
data["station_name"]=data.apply(lambda x: station_name if True else 0, axis=1)
详见https://www.zhihu.com/question/277824046
4.如何在dataframe新添加一行或者多行数据
第一种可以通过data.loc[行索引]直接赋值,此方法对于每次添加单行还行,多行比较麻烦
第二种是通过先构建好新的dataframe,再通过pd.concat连接在一起,可单行可多行
# -*- coding: utf-8 -*-
__author__ = 'fff_zrx'
import pandas as pd
new_data=pd.DataFrame([[1,2,3,4,5,6,7]],columns=['Time_diff', 'E/N_last', 'E_last', 'AR_last', 'AR*_last', 'AR^+_last', 'AR2^+_last'])
print(new_data)
# 第一种方法
new_data.loc[1] = [7,6,5,4,3,2,1]
print(new_data)
# 第二种方法
add_data=pd.DataFrame([[7,6,5,4,3,2,1]])
#add_data=pd.DataFrame([7,6,5,4,3,2,1]).T#此行作用同上,都可
add_data.columns=new_data.columns
new_data = pd.concat([new_data,add_data],ignore_index=True)
print(new_data)