python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?
我需要在熊貓中創建一個函數,該函數將單個數據框作為輸入,并根據特定條件返回多個數據框作為輸出。 (請檢查下面的示例以了解情況)。我很難弄清楚如何做。我需要一些專家的編碼建議。
范例1:
輸入= 100列的數據框
輸出=數據幀1的前10%列(第1到10列),數據幀2的后10%列(第11到20列),依此類推,直到最后10%的列(第91到100列)。
范例2:
輸入= 109列的數據框
輸出=列的前10%的dataframe1(四舍五入)(第1到11列),列的后10%的dataframe2(第12到23列),依此類推,直到最后10%的列(第109列)
這是我嘗試開發的邏輯:
從總數的10%值中找到原始數據幀中的列為'n'
從原始數據框中選擇第一個“ n”列。
將它們添加到新的數據框
從原始數據框中刪除它們
檢查原始數據幀中的列總數是否大于“ n”
如果否->重復步驟2至步驟5。
如果是->將所有剩余的列添加到最后創建的列
數據框。
我嘗試了以下代碼,但這是錯誤的。在下面的代碼中,我嘗試基于拆分百分比獲取受尊重的列號,稍后我計劃使用iloc函數使用這些數字拆分數據幀。def split_column_numbers(total_columns, percentage_split):
list1 = []
number = round((total_columns * (percentage_split/100)))
list1.append([0,number])
for i in range(number):
last_num = list1[-1][-1]
if (last_num < total_columns):
if((total_columns-last_num) > number):
list1.append([last_num+1, last_num+number])
else:
list1.append([last_num+1, total_columns])
return list1
split_column_numbers(101, 10)
誰能幫我這個邏輯是否正確以及如何實現?
最佳答案
如果將框架直接傳遞給該函數,則應該使您更容易確定以后要抓取的列。我們可以使用math.ceil進行四舍五入,并使用itertools.zip_longest劃分為子組。from itertools import zip_longest
from math import ceil
def split_columns(frame, percentage_split):
cols = frame.columns
grp_size = ceil(len(cols) * percentage_split/100)
return [[c for c in grp if c] for grp in zip_longest(*(iter(cols),) * grp_size)]
例如,如果我們按如下所示設置一個虛擬框架:
from string import ascii_lowercase
import pandas as pd
tmp = pd.DataFrame(columns=list(ascii_lowercase))
然后,如果我們執行split_columns(tmp, 10),則會得到:
[['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
['j', 'k', 'l'],
['m', 'n', 'o'],
['p', 'q', 'r'],
['s', 't', 'u'],
['v', 'w', 'x'],
['y', 'z']]
如果我們執行split_columns(tmp, 30),則會得到:
[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'],
['i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'],
['q', 'r', 's', 't', 'u', 'v', 'w', 'x'],
['y', 'z']]
然后,如果我們要使用這些列選擇來創建新框架,則可以使用字典理解和enumerate來實現:
frames = {i: tmp[cols] for i, cols in enumerate(split_columns(tmp, 30))}
這給了我們一個字典,其中的鍵是整數(第一組列對應于0,第二組對應于1等),值是從數據幀中選擇的列。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用户画像系统应用
- 下一篇: Python基础(四)--字典与集合