希望你沒事。
我正在使用一些如下所示的資料框:
df:
Col1 Col2 Col3 ... Coln
Row1 A 7 2 n
Row2 B 5 10 n
Row3 C 3 5 n
如您所見,它有 n 列。我正在嘗試使用列“Col1”和其他每個資料幀制作 n 個資料幀,然后我也會呼叫每個資料幀或應用于所有函式。它看起來像這樣:
df1:
Col1 Col2
Row1 A 7
Row2 B 5
Row3 C 3
df2:
Col1 Col3
Row1 A 2
Row2 B 10
Row3 C 5
...
dfn:
Col1 Coln
Row1 A n
Row2 B n
Row3 C n
我知道我可以手動使用 .iloc[:,n] 但這對 n 列不實用。
所以,我用字典嘗試過這種方式:
columns_list = df.columns.values.tolist()
d = {}
for name in columns_list:
for i in range(1, len(df.columns) 1):
d[name] = pd.DataFrame(data = (df1["Col1"],df.iloc[:,i]), columns = ["XYZ", "ABC"])
壞訊息:不起作用。
我也嘗試過一個函式:
df_base = pd.DataFrame(data = df.iloc[:,0])
def particion(df):
for i in range(1, len(df.columns) 1):
df["df_" str(i)] = df_base.join(df.iloc[:,i])
又是一個壞訊息:不起作用。
我已經完成了我的研究,但找不到具體的人有同樣的事情。
有人知道我能做什么嗎?
uj5u.com熱心網友回復:
所以你想從創建一個變數名串列開始,這可以通過串列理解來完成。以 n=5 為例
n = 5
variable_names = [f"df{i}" for i in range(1,n 1)]
print(variable_names) # Output: ['df1', 'df2', 'df3', 'df4', 'df5']
從這里您可以創建列名串列并為您的第一個列名創建一個常量變數
FIRST_COLUMN_NAME = list(df.columns)[0]
column_names = list(df.columns)[1:]
然后,您可以使用globals()和zip()迭代并創建變數:
for variable, column_name in zip(variable_names, column_names):
globals()[variable] = df[[FIRST_COLUMN_NAME, column_name]]
使用測驗資料框:
col1 col2 col3 col4 col5 col6
0 1 2 3 4 5 6
1 2 3 4 5 6 7
我收到以下輸出:
>>> print(df1)
col1 col2
0 1 2
1 2 3
>>> print(df2)
col1 col3
0 1 3
1 2 4
>>> print(df3)
col1 col4
0 1 4
1 2 5
等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383053.html
