将 3 列数据框转换为矩阵

2024-03-18

我有一个数据框 df,例如:

A = [["John", "Sunday", 6], ["John", "Monday", 3], ["John", "Tuesday", 2], ["Mary", "Sunday", 6], ["Mary", "Monday", 4], ["Mary", "Tuesday", 7]] 
df = pandas.DataFrame(A, columns=["names", "dates", "times"])

我想重塑它,这样我就可以创建一个矩阵,而不是三列,其中第一列索引行,第二列索引列,第三列成为矩阵值,如下所示:

B = [["John", 6, 3, 2], ["Mary", 6, 4, 7]]
df2 = pandas.DataFrame(B, columns=["names", "Sunday", "Monday", "Tuesday"])

甚至更好:

B = numpy.asarray(B)
B = pandas.DataFrame(B)

如何将A转变成B?

我创建了一个双 for 循环,但在我的例子中 df 非常大并且需要很长时间。有更好的方法吗?

这不仅仅是重塑,因为 A 有 18 个值,B 有 8 个值


您可以使用pivot_table(), e.g.:

In []:
df.pivot_table(columns='dates', index='names', values='times').reset_index()

Out[]:
dates names  Monday  Sunday  Tuesday
0      John       3       6        2
1      Mary       4       6        7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 3 列数据框转换为矩阵 的相关文章

随机推荐