python-pd.DataFrame 总结备忘

1. 去重

对df1进行去重操作(去除完全重复的行数据):df1 = df1.drop_duplicates()

对df1的指定若干字段去重操作:df.drop_duplicates(subset=['col_name1','col_name2'],keep='first',inplace=True)

  1. subset: 列名,可选,默认为None
  2. keep:枚举为{'first', 'last', False}
                          'first' - str 去重后保留第一次出现的行,删除后面的所有重复行
                           'last' - str 去重后保留最后出现的行,删除前面的所有重复行
                           False - bool 删除所有重复行,不保留任何一个重复行
  3. inplace:布尔值,是否在原数据上执行去重操作 默认值为False-不在原数据上操作,返回一个修改后的值;Ture-修改原数据

2. 对列(字段)的操作

  • 获得列名称

col_list = list(df)  获得df的列名称列表 [str]

df1.columns  获得df的列索引,类型为 pandas.core.indexes.base.Index   可使用list()将其转变为列表

  • 重命名列名称

使用如下语句 df1.columns = ['ca', 'cb', 2]    # 该语句的df1有三个列,对其进行重命名,赋值一个列表即可。注意:df1的列数量要和列表的长度一致

  • 只保留制定的若干列

df2 = df1[['c1', 'c3']]    # df1 包括 'c1', 'c3'这两列,现在要只取这两列赋值给df2

  • 增加列

  • 对所有的列进行操作

如去除数值的守首尾空字符  

df['db_brand'] = df['db_brand'].map(lambda x: x.strip())    # 对df 的 ‘db_brand’列中的值(字符类型),统一去除首尾空字符

df.db_brand = df.db_brand.map(lambda x: x.strip())    # 效果同上

3. 对行(数据行)的操作

  • 根据某个字段(列)最数据进行排序
    如下,对df_keywod 的'月均搜索量'进行降序排列,并且要求在原始数据上操作
    df_keyword.sort_values(by=['月均搜索量'], inplace=True, ascending=False)

4. 创建一个空的DataFrame

import pandas as pd
df_keyword = pd.DataFrame([], columns=['关键词', '推荐理由', '月均搜索量', '竞争程度', '建议出价'])

此时 df_keyword 即为一个空的df,列字段包括  ['关键词', '推荐理由', '月均搜索量', '竞争程度', '建议出价']

5. DataFrame的合并

  • 将几个字段相同的df在合并到一起
df_keyword = df_keyword.append(df_keyword_1)

6. 修改某个值

且看如下示例

import pandas as pd
df = pd.DataFrame([{"a":1, "b":2, "c":3},
                   {"a":10, "b":20, "c":30},
                   {"a":10, "b":20, "c":300},
                   {"a":100, "b":200, "c":300}
                  ])

# 将 a 字段等于10 的 并且 c 字段不等于300 的那一条数据 的 b 字段设置为 -20
df.loc[(df.a == 10) & (df.c != 300), 'b'] = -20

7. 使用分组

且看如下示例

python-pd.DataFrame 总结备忘_第1张图片

python-pd.DataFrame 总结备忘_第2张图片

python-pd.DataFrame 总结备忘_第3张图片

8. 列表推导中两个for循环

    python这种操作太s了

python-pd.DataFrame 总结备忘_第4张图片

9.  pd.read_csv 总结

        1. 读取的文件默认编码为 'utf-8'

        

df = pd.read_csv(file, encoding='utf-8')

        2. 若读取的文件 编码为 'gb2312'

df = pd.read_csv(file, encoding='gbk')

10. pd.read_excel()

        try:
            data_xlsx = pd.ExcelFile(file)
            for name in data_xlsx.sheet_names:  # data_xlsx.sheet_names 获取Excel文件中各个sheet名称
                df = pd.read_excel(data_xlsx, name)
                # 判断sheet
                if df_column in df.columns:
                    logger.info(f"读取文件|{file_name}|读取sheet|{name}|列名称为第0行")
                    return df
                df = pd.read_excel(data_xlsx, name, header=1)
                if df_column in df.columns:
                    logger.info(f"读取文件|{file_name}|读取sheet|{name}|列名称为第1行")
                    return df
        except Exception as e:
            logger.error(f"文件名|{file_name}|读取文件失败|{e}|")
            return None

11. 其他

你可能感兴趣的:(python,软件工具)