我有這個資料框:
STATE CITY TAX_C MATERIAL IG LIMIT
0 TX DALLAS 1 CARP 0 5
1 TX DALLAS 1 BLAY 0 10
我使用 itertools 創建了一個回圈,該回圈從每一行中獲取每一列的組合:
res = []
for r in range(2,len(df.columns) 1):
for cols in itertools.combinations(df.columns, r ):
res = df[list(cols)].T.to_dict('list').values()
res
它給了我這個輸出:
[[TX, DALLAS], [TX, DALLAS], [DALLAS, 1], [DALLAS 1], [1, CARP], [1, BLAY], [CARP, 0], [0,5], [TX, 1],...]
我試圖得到一個輸出,在每個值之前列印出列名,如下所示:
[[STATE: 'TX', CITY: 'DALLAS'], [STATE: 'TX', CITY: 'DALLAS'], [CITY: 'DALLAS', TAX_C: '1'], [CITY: 'DALLAS', TAX_C: '1'], [TAX_C: '1', MATERIAL: 'CARP']...]
uj5u.com熱心網友回復:
所以我像這樣復制了你的資料
data = [["TX", "TX"], ["DALLAS", "DALLAS"], [1, 1], ["CARP", "BLAY"], [0,0], [5,15]]
df = pd.DataFrame(data).T
df.columns=["STATE", "CITY", "TAX_C", "MATERIAL", "IG", "LIMIT"]
我認為第一步是更深入地研究如何從資料框中獲取字典
for key, value in df.to_dict(orient="index").items():
print(value)
哪個產量
{'STATE': 'TX', 'CITY': 'DALLAS', 'TAX_C': 1, 'MATERIAL': 'CARP', 'IG': 0, 'LIMIT': 5}
{'STATE': 'TX', 'CITY': 'DALLAS', 'TAX_C': 1, 'MATERIAL': 'BLAY', 'IG': 0, 'LIMIT': 15}
如果我們再深入一點,您可以遍歷它并像這樣附加一個串列
results = []
for key, value in df.to_dict(orient="index").items():
row = list(value.items())
for nr in range((len(value)-1)):
results.append([list(row[nr]), list(row[nr 1])])
屈服
[[['STATE', 'TX'], ['CITY', 'DALLAS']],
[['CITY', 'DALLAS'], ['TAX_C', 1]],
[['TAX_C', 1], ['MATERIAL', 'CARP']],
[['MATERIAL', 'CARP'], ['IG', 0]],
[['IG', 0], ['LIMIT', 5]],
[['STATE', 'TX'], ['CITY', 'DALLAS']],
[['CITY', 'DALLAS'], ['TAX_C', 1]],
[['TAX_C', 1], ['MATERIAL', 'BLAY']],
[['MATERIAL', 'BLAY'], ['IG', 0]],
[['IG', 0], ['LIMIT', 15]]]
請注意,您的描述在 Python 中是不可能的。有些東西是串列或字典。串列僅用逗號分隔。
我希望這有幫助 :)
uj5u.com熱心網友回復:
試試下面的代碼:
res = []
for r in range(2, df.columns.size 1):
for cols in itertools.combinations(df.columns, r):
res = df[list(cols)].T.to_dict().values()
res
不同之處在于我從to_dict中洗掉了引數,因此它適用于dict的默認方向。
結果的初始部分是:
[{'STATE': 'TX', 'CITY': 'DALLAS'},
{'STATE': 'TX', 'CITY': 'DALLAS'},
{'STATE': 'TX', 'TAX_C': 1},
{'STATE': 'TX', 'TAX_C': 1},
{'STATE': 'TX', 'MATERIAL': 'CARP'},
{'STATE': 'TX', 'MATERIAL': 'BLAY'},
{'STATE': 'TX', 'IG': 0},
{'STATE': 'TX', 'IG': 0},
{'STATE': 'TX', 'LIMIT': 5},
{'STATE': 'TX', 'LIMIT': 10},
所以它是一個字典串列,與您想要的結果非常相似。
uj5u.com熱心網友回復:
我認為您正在尋找pairwise而不是combinations來自itertools-
pairs = []
for col_pair in pairwise(df.columns):
values = df[list(col_pair)].to_records(index=False)
keys = col_pair
pairs.extend(dict(zip(col_pair, _)) for _ in values)
輸出
[{'STATE': 'TX', 'CITY': 'DALLAS'},
{'STATE': 'TX', 'CITY': 'DALLAS'},
{'CITY': 'DALLAS', 'TAX_C': 1},
{'CITY': 'DALLAS', 'TAX_C': 1},
{'TAX_C': 1, 'MATERIAL': 'CARP'},
{'TAX_C': 1, 'MATERIAL': 'BLAY'},
{'MATERIAL': 'CARP', 'IG': 0},
{'MATERIAL': 'BLAY', 'IG': 0},
{'IG': 0, 'LIMIT': 5},
{'IG': 0, 'LIMIT': 10}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497805.html
