我有两个数据框, df 和 df_test 。我正在尝试为每个 df_test 行创建一个新的数据帧,其中包含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 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_test 数据帧的每一行,"尝试"创建列。每个循环中的(索引)是基于所使用的测试行的新数据框的名称。使用修改后的列和新列创建数据帧后,我需要将数据帧保存到字典中。新循环产生了我需要的每个新数据帧,但保存每个新数据帧的最佳方法是什么?任何帮助创建这些列将不胜感激。
如有需要,请对任何问题发表评论,以便我更容易理解。