我有一张表,其中有 2 个余弦计算:第二个通过点的间隔是第一个的 2 倍。
因此,在某些点上,所有值都是相同的,而在其他点上则不同。
必需:分割线。值匹配的地方,我们把所有的值放在一行;不匹配的地方,我们把值放在新的一行。
输出应该是这样的:
i x_i cos(x_i) x_j cos(x_j)
0 0.000 0.000 0.000 0.000
1 0.157 0.987
2 0.314 0.309 0.314 0.309
3 0.471 0.891
编码:
import pandas as pd
dataframe = pd.DataFrame()
dataframe['i'] = pd.Series([0.00, 0.314, 0.628, 0.942])
dataframe['cos(x_i)'] = pd.Series([0.000, 0.309, 0.587, 0.809])
dataframe['j'] = pd.Series([0.00, 0.157, 0.314, 0.471])
dataframe['cos(x_j)'] = pd.Series([0.000, 0.987, 0.309, 0.891])
for col in dataframe:
if dataframe.iloc['i'] == dataframe.iloc['j']:
# в датафрейм вносим всю строку
else:
# спускаемся на строку ниже
# в датафрейм вносим ячейки столбцов 'j' и 'cos(x_j)'
好吧,你已经通过
merge了,事实上,这LEFT OUTER JOIN就是说语言SQL。然后我不得不重新排列某些地方的列,好吧,NA过滤j:Pandas最好不要使用循环——它很慢而且通常是错误的。