pandas读取数据库中的数据
import pandas as pd
from sqlalchemy import create_engine
con = create_engine('mysql+pymysql://user:password@host:3306/database?charset=utf8')
pd.read_sql(query_sql, con)
两个DataFrame纵向合并
df,data都为DataFrame
df.append(data, sort=False)
两个DataFrame横向向合并
df,data都为DataFrame
pd.merge(data, df, on='id') # 根据id进行合并
df某列字段中有字典,把字典转成列,再与df合并,我这里的字段是dongmi_keywords
df_final = pd.concat([df, df['dongmi_keywords'].apply(pd.Series)], axis=1).drop('dongmi_keywords',axis=1)
print(df_final)
删除重复项
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
df = df.drop_duplicates(['name'], keep='first')
subset : 指定列名,根据列名删除重复项
keep: {'first', 'last', False} 默认保留第一项,当keep=False时,则是不重复的项
inplace : True/False, 默认 False
是直接在原来数据上修改还是保留一个副本
df[~df['name'].isin(df1['name'])]
根据字段name判断,取出df数据不在df1中的数据
DataFrame行列转置
pd.DataFrame(a).stack().sort_values(ascending=False).reset_index() # .stack()用于行列转置,因为自己的需求需要对值进行排序用了sort_values
DataFrame对数据值排序
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
by:指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis:若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
ascending:是否按指定列的数组升序排列,默认为True,即升序排列
inplace:是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position:{‘first’,‘last’},设定缺失值的显示位置
遍历DataFrame中的每一行数据
for indexs in data.index:
print('indexs======>', indexs)
print('pubDate==>', data.iloc[indexs])
#如果要修改其中某一个字段的值
d_index = list(data.columns).index('要修改的字段名') # 所在位置的索引值
data.iloc[indexs, d_index] = 要修改为的值
print(data) # 此时的data已经是修改后的数据