我有2个数据框A和B,并且正在考虑如何以橙色
创建数据框要为每个单元格填充的值将基于列和标题。例如:左上角的单元格将是基于行和列索引的func(数据框A.A0 +数据框A.A1 - 数据框B.0)
我尝试使用橙色尺寸的空数据框(emptyDF)
emptyDf.applyMap(lambda x: x[dfA[0]] + x[dfA[1] - x[dfB[0]]]
答案 0 :(得分:1)
你要做的不是使用Pandas数据帧的精神,而是更多的NumPy更适合的矩阵操作练习,Pandas构建的库。在Pandas数据帧和NumPy阵列之间移动并不难,但是当您将索引和列标签重新放入pandas时,可能需要小心存储索引和列标签。有各种各样的NumPy函数可以做你想象的任何操作,我找到了一些工具来帮助这个应用程序:
import pandas as pd
import numpy as np
# create your dataframes:
series = pd.Series([10,9,8,7,6], index=[0,1,2,3,4])
df1 = pd.DataFrame([series])
cols = ['A','B','C','D']
list_of_series = [pd.Series([1,2,3,4],index=cols), pd.Series([5,6,7,8],index=cols)]
df2 = pd.DataFrame(list_of_series, columns=cols)
现在转换为NumPy
A = np.array(df2)
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
B = np.array(df1)
>>> B.T
array([[10],
[ 9],
[ 8],
[ 7],
[ 6]])
现在完成任务的几个NumPy操作:
C = A.sum(axis=0)
D = np.tile(C,(5,1))
E = np.tile(B.T, (1,4))
F = D - E
F
array([[-4, -2, 0, 2],
[-3, -1, 1, 3],
[-2, 0, 2, 4],
[-1, 1, 3, 5],
[ 0, 2, 4, 6]])
现在将其转换回数据帧:
pd.DataFrame(F, columns=['A','B','C','D'], index=[0,1,2,3,4])
无论如何,我想知道这是否可以直接来自熊猫,但它只是让我感到一个矩阵问题,它是一个大型系统的计算时间,因为它留在NumPy我不认为它会慢一点。