Python科学计算pandas18df拼接concat

2020-11-22 09:06 Python工程师

系统:Windows 7
语言版本:Anaconda3-4.3.0.1-Windows-x86_64
编辑器:pycharm-community-2016.3.2
pandas:0.19.2

如果不是你 尤长靖 - 风犬少年的天空 青春剧原声专辑
  • 这个系列讲讲Python的科学计算及可视化
  • 今天讲讲pandas模块
  • 对不同df进行按行或者按列的拼接


Part 1:场景描述


  1. 已知3个df,对其按行进拼接,按进行拼接


3个df





按行方向拼接





按列方向拼接





Part 2:代码


import pandas as pd
# 显示所有列pd.set_option('display.max_columns', None)# 显示所有行pd.set_option('display.max_rows', None)# 设置value的显示长度为100pd.set_option('max_colwidth', 100)# 设置对齐pd.set_option('display.unicode.ambiguous_as_wide', True)pd.set_option('display.unicode.east_asian_width', True)# 设置打印宽度pd.set_option('display.width', 180)

dict_1 = {"pos": ["A", "A", "A", "A"], "value1": [10, 20, 30, 40], "value2": [100, 200, 300, 400], "value3": [30, 60, 20, 90]}
df_1 = pd.DataFrame(dict_1, columns=["pos", "value1", "value2", "value3"], index=[0, 1, 2, 3])print("\n", "df_1", "\n", df_1, "\n")

dict_2 = {"pos": ["B", "B", "B", "B"], "value1": [50, 60, 70, 80], "value2": [500, 600, 700, 800], "value3": [50, 60, 80, 80]}
df_2 = pd.DataFrame(dict_2, columns=["pos", "value1", "value2", "value3"], index=[3, 5, 6, 7])print("\n", "df_2", "\n", df_2, "\n")

dict_3 = {"pos": ["C", "C", "C", "C"], "value1": [20, 60, 80, 80], "value2": [500, 600, 700, 800], "value3": [50, 20, 80, 80]}
df_3 = pd.DataFrame(dict_3, columns=["pos", "value1", "value2", "value3"], index=[6, 7, 10, 11])print("\n", "df_3", "\n", df_3, "\n")
# df = pd.concat([df_1, df_2, df_3])# print("\n", "df = pd.concat([df_1, df_2, df_3])", "\n", df, "\n")
df = pd.concat([df_1, df_2, df_3], axis=1)print("\n""df = pd.concat([df_1, df_2, df_3], axis=1)""\n", df, "\n")


代码截图




Part 3:部分代码解读


  1. pd.set_option('display.width', 180)
    • 当不进行一系列set_option进行设置的时候,打印出来时存在换行的问题
    • 包括如果若有中文字符,可能会出现不同行之间不对齐的问题
    • 大家可以参考本文中进行设置,根据实际情况,进行参数调整
  2. df = pd.concat([df_1, df_2, df_3]), 按行方向进行拼接
    • 列索引名相同时,写在同一列
    • 列索引名不同时,写在不同列,缺值部分用Nan表示
  3. df = pd.concat([df_1, df_2, df_3], axis=1),按列方向进行拼接
    • 行索引名相同时,写在同一行
    • 行索引名不同时,写在不同行,缺值部分用Nan表示


跨行显示问题





将df_1的value3列索引改为value4





本文为原创作品,欢迎分享朋友圈

长按图片识别二维码,关注本公众号
Python 优雅 帅气

本文章转载自公众号:DatenSpiel

首页 - Python 相关的更多文章: