import pandas
import numpy

# 读excel
main():
    xls = pandas.ExcelFile(ordersFile)
    df= pandas.read_excel(xls, 'sheet1') # 读取dataframe

# 写excel
    with pandas.ExcelWriter('./订单清洗后数据.xlsx') as writer:
        df.to_excel(writer, sheet_name='sheet1',  index=None)  #默认会写入index, 建议不写入index

# 根据3列后数据去重
    df = df.drop_duplicates(sheet.columns[3:])

# 删除0列和指定名称列
    df = df.drop([df.columns[0], '文件名'], axis=1)

# 返回某一列(sheet名)的哪些行包含指定内容
    df.Sheet名.str.contains('作废')

# 计算True的数量
    numpy.sum(dfall['Sheet名'].str.contains('作废')!=0)

# 删除包含指定字符的行
   dfall[ ~dfall['Sheet名'].str.contains('作废') ]

# 插入列
   df.insert(index数值表示的位置, '列名', 数组)

# 直接数组方式插入
   df['新列名'] = [1,2,3,4]

# 直接数组方式修改
   df['旧列名'] = [1,2,3,4]

# 遍历并修改行内数值
for i in range(len(df)):
    index = df.index[i] #实际index和数组序号不同
    df.loc[index, '某列名'] = '新数值' + df.某某列名[index] # 必须使用loc修改,但可以直接使用"."读取

# 列名相同的简单合并
    df = df.append(otherdf)

# 相同内容填充数组
arr = numpy.full((3), 'a') # 填充一元数组
arr = numpy.full((3,2), 'a') # 填充二元数组

# 将第1列NaN替换掉的四种方式, 有时候会报错`A value is trying to be set on a copy of a slice from a DataFrame`, 有时候不会, 还不知道怎么解决.
df[1].fillna(0, inplace=True)
df[['a', 'b']] = df[['a','b']].fillna(value=0)
df.fillna({'a':0,'b':0})
df=df.fillna({'a':0,'b':0})

# 连接多个df后, index重复需要做index重置
df=df.reset_index(drop=True)

# 修改指定的columns名称
df.rename(columns={'$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=True) 

数据合并

数据合并比较多样,看这儿https://www.cnblogs.com/guxh/p/9451532.html

使用第2行作为header(从0起算,序号为1)

sheet = pandas.read_excel(fileName, sheetName, header=1)

标签: none 阅读量: 918

添加新评论