# 創建一個以 “,”(英文逗號)爲分隔符的 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
如何使用pandas實現excel中的數據分列功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.