如何将 Pandas DataFrame 的每一行转换成一个新的 nxm 矩阵?
How to convert each row of a Pandas DataFrame into a new nxm matrix?
您好,我生成了一个数据框,如下所示:
Data mS1 nS1 mS1S2 nS1S2
KC 1 9 1 18
KN 1 9 0 19
KD 1 9 1 18
NG 0 10 2 17
现在我想将每一行转换为一个新的 2x2 矩阵:
第 1 和第 3 以及第 2 和第 4 列
例如 KC:
KC 1 1
-KC 9 18
使用 Data
字段中的键创建字典或列表理解,并使用 numpy.ndarray.reshape
。看起来还需要使用 order='F'
来获得所需的输出:
d = {i: pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'),
index=[f'{i}', f'-{i}'],
columns=['A', 'B'])
for i, r in df.set_index('Data').iterrows()}
print(d['KC'])
[出局]
A B
KC 1 1
-KC 9 18
l = [pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'),
index=[f'{i}', f'-{i}'],
columns=['A', 'B'])
for i, r in df.set_index('Data').iterrows()]
for d in l:
print(d)
[出局]
A B
KC 1 1
-KC 9 18
A B
KN 1 0
-KN 9 19
A B
KD 1 1
-KD 9 18
A B
NG 0 2
-NG 10 17
标准不明确,但这个玩具问题的解决方案可能是:
import pandas as pd
df = pd.DataFrame({'mS1':[1,1,1,0],
'nS1':[9,9,9,10],
'mS1S2':[1,0,1,2],
'nS1S2':[18,10,19,17]},
index = ['KC', 'KN', 'KD', 'NG'])
d = {}
for r in df.itertuples():
d[r[0]] = pd.DataFrame({'A':[r[1],r[3]],
'B':[r[2],r[4]]},
index = ['{}'.format(r[0]), '-{}'.format(r[0])])
d
你得到一个字典 d
有 4 个数据框:
{'KC': A B
KC 1 9
-KC 1 18,
'KN': A B
KN 1 9
-KN 0 10,
'KD': A B
KD 1 9
-KD 1 19,
'NG': A B
NG 0 10
-NG 2 17}
您好,我生成了一个数据框,如下所示:
Data mS1 nS1 mS1S2 nS1S2
KC 1 9 1 18
KN 1 9 0 19
KD 1 9 1 18
NG 0 10 2 17
现在我想将每一行转换为一个新的 2x2 矩阵: 第 1 和第 3 以及第 2 和第 4 列
例如 KC:
KC 1 1
-KC 9 18
使用 Data
字段中的键创建字典或列表理解,并使用 numpy.ndarray.reshape
。看起来还需要使用 order='F'
来获得所需的输出:
d = {i: pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'),
index=[f'{i}', f'-{i}'],
columns=['A', 'B'])
for i, r in df.set_index('Data').iterrows()}
print(d['KC'])
[出局]
A B
KC 1 1
-KC 9 18
l = [pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'),
index=[f'{i}', f'-{i}'],
columns=['A', 'B'])
for i, r in df.set_index('Data').iterrows()]
for d in l:
print(d)
[出局]
A B
KC 1 1
-KC 9 18
A B
KN 1 0
-KN 9 19
A B
KD 1 1
-KD 9 18
A B
NG 0 2
-NG 10 17
标准不明确,但这个玩具问题的解决方案可能是:
import pandas as pd
df = pd.DataFrame({'mS1':[1,1,1,0],
'nS1':[9,9,9,10],
'mS1S2':[1,0,1,2],
'nS1S2':[18,10,19,17]},
index = ['KC', 'KN', 'KD', 'NG'])
d = {}
for r in df.itertuples():
d[r[0]] = pd.DataFrame({'A':[r[1],r[3]],
'B':[r[2],r[4]]},
index = ['{}'.format(r[0]), '-{}'.format(r[0])])
d
你得到一个字典 d
有 4 个数据框:
{'KC': A B
KC 1 9
-KC 1 18,
'KN': A B
KN 1 9
-KN 0 10,
'KD': A B
KD 1 9
-KD 1 19,
'NG': A B
NG 0 10
-NG 2 17}