python - 使用 Pandas Python 更改数据框中数据透视数据的数据格式

标签 python pandas dataframe matrix

场景

我的数据集的格式如下:

我称之为实际格式

uid iid rat tmp
196 242 3   881250949
186 302 3   891717742
22  377 1   878887116
244 51  2   880606923
166 346 1   886397596
298 474 4   884182806
115 265 2   881171488
253 465 5   891628467
305 451 3   886324817
6   86  3   883603013

在将其传递给其他函数(KMeans Clustering)时,它需要采用如下格式,这是我使用枢轴映射创建的:

我称之为矩阵格式

uid 1               2               3               4
4   4.3320762062    4.3407749532    4.3111995162    4.3411425423
5   4               3               2.1952622349    3.1913491995
6   4               3.4233243638    3.8255108621    3.948791424
7   4.4983411706    4.0477240538    4.0241460801    5
8   4.1773004578    4.0191412859    4.0442369862    4.1754642909
9   4.2733984521    4.2797130861    4.2682723131    4.2816986988
15  1               3.0554789259    3.2279546684    3.1282278957
16  5               4.3473697565    4.0675394438    5

问题:

现在,由于我需要将结果/矩阵格式数据再次传递给第一个算法,因此我需要将其转换为旧格式。

转换:

为了将 OLD 转换为 MATRIX 格式,我做了:

Pivot_Matrix = source_data.pivot(values='rat', index='uid', columns='iid')

我尝试反转和交换值以获得旧格式,但这显然失败了。有什么方法可以将 MATRIX 恢复为旧格式吗?

最佳答案

您需要stackrename_axis对于列名称和最后一个 reset_index :

df = df.stack().rename_axis(('uid','iid')).reset_index(name='rat')
print (df.head())
   uid iid       rat
0    4   1  4.332076
1    4   2  4.340775
2    4   3  4.311200
3    4   4  4.341143
4    5   1  4.000000

关于python - 使用 Pandas Python 更改数据框中数据透视数据的数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631087/

相关文章:

python - 在 Python 中代理一个类

python - 使用 GCD 从 Cocoa 应用程序运行 Python 脚本

Python异常处理——行号

python - 将元组列表转换为数组或其他允许轻松切片的结构

python - 将每年日期更改为每月日期并添加新值以填充每月日期

python - 将 Pandas 数据框转换为字典会用空格重命名列标题

python - pandas.DataFrame.droplevel(如keeplevel)是否有相反的功能?

Python - 计算 Pandas 数据框中的非字母数字字符

python - Pandas 将变量添加为列并对应于原始表(但它们的长度不同)

python - pandas 的最大项目匹配