我的问题是,我没有将多个数据帧中的每一行都与一个标签相对应,而是将多个数据帧分别具有相同的列和行数,但每个数据帧都标记为l1,l2或l3。您需要数据框中的所有数据才能确定标签。
例如,假设我有这个数据帧及其标签为l1,并想象我还有多个标签为l1,l2或l3的数据。我需要创建一个分类模型,以便当我拥有这样的新数据框时,它可以对其进行分类。
Time Measure1 Measure2
1 10 1000
2 12 1245
3 20 1837
4 18 1837
如何用R或Python构建结构?
我希望这很清楚!
答案 0 :(得分:0)
您有一个正确的想法:要使分类模型正常工作,您需要在结果数据框的单行中包含单个样本的数据。在示例中,您拥有的是某种交叉表,但您需要的是扁平表。幸运的是,使用熊猫,您可以使用unstack()
轻松创建平面表:
>>> df = pd.DataFrame([[1, 10, 1000], [2, 12, 1245], [3, 20, 1837], [4, 18, 1837]],
columns=['Time', 'Measure1', 'Measure2'])
>>> s = df.set_index('Time').unstack()
>>> s
Time
Measure1 1 10
2 12
3 20
4 18
Measure2 1 1000
2 1245
3 1837
4 1837
dtype: int64
结果是带有MultiIndex的pd.Series
(=单列)。然后,您可以将标签添加到测量中,并将所有数据连接到单个数据框中。
>>> s['label'] = 'l1'
>>> df = pd.concat([s,s,s], axis=1).T
>>> df
Measure1 Measure2 label
Time 1 2 3 4 1 2 3 4
0 10 12 20 18 1000 1245 1837 1837 l1
1 10 12 20 18 1000 1245 1837 1837 l1
2 10 12 20 18 1000 1245 1837 1837 l1
在各列中使用MultiIndex有点麻烦,但是您可以将其替换为
>>> df.columns = ['_'.join(str(x) for x in c).strip('_') for c in df.columns]
>>> df
Measure1_1 Measure1_2 Measure1_3 ... Measure2_3 Measure2_4 label
0 10 12 20 ... 1837 1837 l1
1 10 12 20 ... 1837 1837 l1
2 10 12 20 ... 1837 1837 l1