[英]Is there a way to create n number of dataframes from columns in a dataframe? Phyton
希望你沒事。
我正在使用一些看起來像這樣的數據框:
df:
Col1 Col2 Col3 ... Coln
Row1 A 7 2 n
Row2 B 5 10 n
Row3 C 3 5 n
如您所見,它有 n 列。 我正在嘗試使用“Col1”列和其他每個列創建 n 個數據幀,然后我將調用每個 dataframe 或應用於所有 function 。 它看起來像這樣:
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"])
壞消息:不起作用。
我也嘗試過使用 function:
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])
又是一個壞消息:不起作用。
我已經完成了我的研究,但找不到專門有同樣事情的人。
有人知道我能做什么嗎?
所以你想從創建一個變量名列表開始,這可以通過列表理解來完成。 以 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]]
使用測試 dataframe:
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
等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.