Python 3.x 从表中的列中减去单个值
我有两个数据帧,df和df_test。我正在尝试为每个df_测试行创建一个新的数据帧,其中将包括x坐标和y坐标之间的差异。我还想创建一个新的列,给出对象之间距离的大小。下面是我的代码Python 3.x 从表中的列中减去单个值,python-3.x,pandas,apply,Python 3.x,Pandas,Apply,我有两个数据帧,df和df_test。我正在尝试为每个df_测试行创建一个新的数据帧,其中将包括x坐标和y坐标之间的差异。我还想创建一个新的列,给出对象之间距离的大小。下面是我的代码 import pandas as pd import numpy as np # Create Dataframe index_numbers = np.linspace(0, 10, 11, dtype=np.int) index_ = ['OP_%s' % number for number in inde
import pandas as pd
import numpy as np
# Create Dataframe
index_numbers = np.linspace(0, 10, 11, dtype=np.int)
index_ = ['OP_%s' % number for number in index_numbers]
header = ['X', 'Y', 'D']
# print(index_)
data = np.round_(np.random.uniform(low=0, high=10, size=(len(index_), 3)), decimals=0)
# print(data)
df = pd.DataFrame(data=data, index=index_, columns=header)
df_test = df.sample(3)
# print(df)
# print(df_test)
for index, row in df_test.iterrows():
print(index)
print(row)
df_(index) = df
df_(index)['X'] = df['X'] - df_test['X'][row]
df_(index)['Y'] = df['Y'] - df_test['Y'][row]
df_(index)['Dist'] = np.sqrt(df_(index)['X']**2 + df_(index)['Y']**2)
print(df_(index))
更适合循环
for index, row in df_test.iterrows():
# print(index)
# print(row)
# print("df_{0}".format(index))
df_temp = df.copy()
df_temp['X'] = df_temp['X'] - df_test['X'][index]
df_temp['Y'] = df_temp['Y'] - df_test['Y'][index]
df_temp['Dist'] = np.sqrt(df_temp['X']**2 + df_temp['Y']**2)
print(df_temp)
我编写了一个for循环来遍历df_测试数据帧的每一行,并“尝试”创建列。每个循环中的(索引)是基于所用测试行的新数据帧的名称。一旦使用修改后的列和新列创建了数据帧,我就需要将数据帧保存到字典中。新循环生成我需要的每个新数据帧,但保存每个新数据帧的最佳方法是什么?如果您能帮助我们创建这些专栏,我们将不胜感激
如果需要,请用任何问题进行评论,以便我能更容易理解 找不到关于df_T1的任何信息很抱歉,T1是我以前使用的(索引)。我换了。好主意。读到这篇文章,你可能会有一些运气:也许相关,为什么
df\u测试是df
的一个样本?当我尝试运行您的代码(并将新的df
s分配给字典)时,此方法会在pandas中创建索引错误。df_test是df的一个示例,因为我希望找到所有对象之间的距离(每行是一个与某个坐标原点有x和y距离的对象)。我需要找到从df_测试中的每个对象到df数据帧中任何对象的距离。不过,我对其他方法持开放态度。我正试图用我现在能想到的唯一方法来解决这个问题。那么,如果你有一个10个坐标的DF,你想得到一个90个坐标的DF(或dict,或list)?e、 例如,索引(dict key)是原始的x-y,值是到其他9个坐标的距离?