Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从dataframe创建字典_Python_Pandas_Dictionary - Fatal编程技术网

Python 从dataframe创建字典

Python 从dataframe创建字典,python,pandas,dictionary,Python,Pandas,Dictionary,我有以下代码 pd.DataFrame(index=["A", "A", "B","B","B"], columns=["col1","col2","col3"], data=np.array([[5,3,5],[8,6,4],[8,6,4],[2,7,6],[8,6,4]])) 这将导致以下数据帧 col1 col2 col3 A 5 3 5 A 8 6 4 B 8 6 4 B

我有以下代码

pd.DataFrame(index=["A", "A", "B","B","B"], columns=["col1","col2","col3"],
data=np.array([[5,3,5],[8,6,4],[8,6,4],[2,7,6],[8,6,4]]))
这将导致以下数据帧

    col1    col2    col3
A      5     3       5
A      8     6       4
B      8     6       4
B      2     7       6
B      8     6       4

我想用它创建一个字典,其中包含键a和键B,值是包含其余数据的数据帧。例如,对于A,值应该是如下所示的数据帧

col1    col2    col3
5        3       5
8        6       4

将字典理解与
groupby
一起使用,对于默认索引:

d = {k:v.reset_index(drop=True) for k, v in df.groupby(level=0)}
print (d)
{'A':    col1  col2  col3
0     5     3     5
1     8     6     4, 'B':    col1  col2  col3
0     8     6     4
1     2     7     6
2     8     6     4}

如果需要不更改索引值,则可以使用:

d = dict(tuple(df.groupby(level=0)))
print (d['A'])
   col1  col2  col3
A     5     3     5
A     8     6     4
但这与使用以下选项选择原始数据相同:


设置

df = pd.DataFrame(index=["A", "A", "B","B","B"], 
                  columns=["col1","col2","col3"],
                  data=np.array([[5,3,5],[8,6,4],[8,6,4],[2,7,6],[8,6,4]]))

马丁,你想要一个可以重建成a或B的字典吗?pd.DataFrame(df.T['A'].apply(list).T.to_dict(orient='records')将为您提供一个A,但要重建它,您必须执行以下操作:pd.DataFrame(df.T['A'].apply(list).T.to_dict(orient='records'),index=['A',A']
print (df.loc['A'])
   col1  col2  col3
A     5     3     5
A     8     6     4
df = pd.DataFrame(index=["A", "A", "B","B","B"], 
                  columns=["col1","col2","col3"],
                  data=np.array([[5,3,5],[8,6,4],[8,6,4],[2,7,6],[8,6,4]]))