如何使用pandas實現excel中的數據分列功能

# 創建一個以 “,”(英文逗號)爲分隔符的 Series
import numpy as np
import pandas as pd

df = pd.DataFrame([str([np.random.randint(j, j*10 + 1) for i in range(1, 6)])[1:-1] for j in range(1, 11)],columns=[",".join(" ABCD")])
""" 解析:
[str([np.random.randint(j, j*10 + 1) for i in range(1, 6)])[1:-1] for j in range(1, 11)] 構造了一個嵌套列表。分步解析如下:
1、[np.random.randint(j, j*10 + 1) for i in range(1, 6)] 爲內層列表,該列表包含 5 個元素,元素的值爲 [j, j*10 + 1) 區間內的隨機整數

2、str()[1, -1],是將第 1 步中的列表轉化爲字符串,相當於把 [2, 2, 6, 9, 7] 轉化爲 2, 2, 6, 9, 7

3、最外層的 for j in range(1, 11),構造了一個包含 10 個元素的列表
"""
df
#              ,A,B,C,D
# 0       2, 2, 6, 9, 7
# 1   15, 9, 14, 16, 11
# 2    13, 20, 5, 8, 19
# 3  24, 12, 16, 25, 13
# 4   27, 7, 43, 47, 31
# 5    9, 44, 8, 56, 47
# 6  47, 55, 57, 35, 14
# 7  24, 35, 60, 37, 24
# 8  30, 30, 22, 49, 53
# 9  43, 27, 97, 91, 27

ret_df = pd.DataFrame([i for i in df[df.columns[0]].str.split(",")], columns=df.columns[0].split(","))
""" 解析: 
1、使用df.columns[0],而不是df.columns;因爲df.columns得到的是DataFrame,沒有str類

2、[..for ..] 爲列表推導式。舉個簡單的例子:
   my_list = list()
   for i in range(5):
       my_list.append(i)  
   上面三條語句等價於:[i for i in range(5)]    
   
   print([i for i in range(5)] == my_list)  # 返回 True    
"""
ret_df
# Out[175]: 
#          A    B    C    D
# 0   7    6    2   10    4
# 1  20    3    8   16   15
# 2  29   23   15   11   12
# 3  17   16   18   17   16
# 4   6   37   43   14    5
# 5  46   37   32   26   26
# 6  62   53   41   24   21
# 7  75   15   59   42   66
# 8  70   89   62   48   76
# 9  21   93   96   35   85
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章