首页 > 解决方案 > 遍历 Pandas 组以创建 DataFrame

问题描述

我有一张表格,其中包含零件的生产数据以及在生产过程中记录的变量。格式:

Part | Variable1 | Variable 2 etc
_____________________________
1-----------X---------------X
1-----------X---------------X
2-----------X---------------X
2-----------X---------------X
2-----------X---------------X
2-----------X---------------X
2-----------X---------------X
2-----------X---------------X
2-----------X---------------X
3-----------X---------------X
3-----------X---------------X
3-----------X---------------X

我可以将这些按部分分组

dfg = df.groupby("Part") #Where df is my dataframe of productiondata

我还将所有零件编号存储在 part_num 数组中

part_num = df['Part'].unique()
>out:
array([ 615,  629,  901,  908,  911,  959,  969, 1024, 1025, 1058, 1059,
       1092, 1097, 1104, 1105, 1114, 1115, 1117, 1147, 1161, 1171, 1172,
       1173, 1174, 1175, 1176, 1177, 1188, 1259, 1307, 1308, 1309, 1310,
       1311, 1312, 1313, 1322, 1339, 1340, 1359, 1383, 1384, 1389, 1393,
       1394, 1398, 1399, 1402, 1404, 1413, 1414, 1417, 1441, 1449, 1461,
       1462, 1463, 1488, 1489, 1490, 1491, 1508, 1509, 1514, 1541, 1542,
       1543, 1544, 1545, 1554, 1555, 1559, 1586, 1589, 1601, 1606, 1607,
       1618, 1620, 1636, 1659, 1664, 1665, 1667, 1668, 1673, 1674, 1676,
       1677, 1679, 1680, 1681, 1687, 1688, 1690, 1704, 1706, 1711, 1714,
       1717, 1718, 1723, 1724, 1729, 1731, 1732, 1745, 1747, 1748, 1749,
       1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763,
       1764, 1765, 1766, 1767, 1768, 1769, 1773, 1774, 1779, 1780, 1783,
       1784, 1785, 1787, 1789, 1790, 1791, 1792, 1800, 1845], dtype=int64)

如何为每个零件编号组创建数据框?

标签: pythonpandasdataframetensorflowscikit-learn

解决方案


因此,您需要每个唯一“零件号组”的数据框。

对索引执行 agroupby操作,然后将每个数据帧迭代地存储在 dict(或列表)中。

虚拟数据

>>> df = pd.DataFrame(np.random.randint(1, 10, (8, 7)),
                  columns=['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'b4'], index=[1, 1, 2, 2, 2, 3, 5, 5])
>>> df.head(10)

   a1  a2  a3  b1  b2  b3  b4
1   5   3   8   8   1   7   1
1   8   8   8   7   2   5   8
2   4   8   1   9   2   7   5
2   1   8   4   4   1   8   9
2   4   7   4   4   3   9   5
3   3   6   9   3   8   9   2
5   9   5   2   1   7   6   1
5   3   9   1   5   5   8   1

数据帧的分组字典

>>> grouped_dict = {k: v for k, v in df.groupby(df.index)}
>>> grouped_dict[3] # part number 3 dataframe

   a1  a2  a3  b1  b2  b3  b4
3   5   7   5   1   7   8   5

推荐阅读