# 列表和数组,维数顺序从内到外为(列,行,组),shape书写方式从左到右为(组,行,列)
list_3_1 = [[]]*3 # [[], [], []] 2维列表:3行0列
# 但是DataFrame中data会忽略空列表,所以必须填入元素
# 判断列表的维数
shape_list = np.array(list_3_1).shape # (3, 0) 2维数组:3行0列
len(shape_list) # 维数=2
# 迭代法,先判断维数,确定for循环的层数
# 递归法,无论维数多少,递归从外到内
# 参考谷歌:根据维数自动生成for循环的层数 itertools https://blog.csdn.net/hehedadaq/article/details/114821778
# my_df = pd.DataFrame(
# data=list_3_1,
# columns = ['col' + str(i) for i in range(len(list_3_1))] # 此处不要用圆括号,单个元素会忽略圆括号
# )
# 表格的维数规则,与列表和数组一致,除了以下两点,一维列表(无行n列)
# 一维列表或数组输入Series中,列数转换为index,输出看起来像行数
# 一维列表或数组输入DataFrame中,列数转换为index,固定为1
pd.DataFrame() # 无输入,行数为0,列数为0
pd.DataFrame([]) # 输入一维空容器,行数为0,列数为0
pd.DataFrame([1]) # 输入一维非空容器,行数固定为1,列数根据容器内元素个数而定;小心:圆括号内只包含一个元素,不被视为元组!DataFrame报错ValueError
pd.DataFrame([()]) # 输入二维空容器,行数为1,列数为0;小心:圆括号内只包含一个元素,不被视为元组!DataFrame报错TypeError
pd.DataFrame([(),()]) # 输入二维空容器,行数为2,列数为0
pd.DataFrame([(1)]) # 输入二维非空容器,行数为1,列数根据容器内元素个数而定
pd.DataFrame([(1,1)]) # 同上
pd.DataFrame([[None]]*3) # 如果列表内元素个数为1,DataFrame会输出为一列