我想条件转移Pandas列,会想转移所有列与i > 6下面是我正在做的,它是不工作
import pandas as pd
import numpy as np
# Creating data for 'i' and 'price' columns
n = 10 # Number of entries
i_values = list(range(1, n+1))
price_values = [10.99, 19.99, 5.99, 8.49, 12.99, 15.99, 9.99, 14.99, 6.99, 11.99]
# Creating DataFrame
data = {'i': i_values,
'price': price_values}
df = pd.DataFrame(data)
df['price_new'] = df.loc[df.i>6, 'price'].shift(-3)
字符串
预期的输出:
n = 10 # Number of entries
i_values = list(range(1, n+1))
price_values = [10.99, 19.99, 5.99, 8.49, 12.99, 15.99, 9.99, 14.99, 6.99, 11.99]
new_price_values = [np.NaN, np.NaN, np.NaN, 9.99, 14.99, 6.99, 11.99, np.NaN, np.NaN, np.NaN]
# Creating DataFrame
data = {'i': i_values,
'price': price_values,
'new_price': new_price_values}
df = pd.DataFrame(data)
型
3条答案
按热度按时间n53p2ov01#
应用移位,然后选择要保留的单元格。看起来你试图一次完成这一切,只是在这个过程中得到了错误的索引。
你所寻求的是一句话
字符串
这将产生您所期望的输出。
为清晰起见,分2步分解
带有可分配的中间柱。
1)应用shift
型
2)选择单元格
型
fkvaft9z2#
这里有一个方法:
字符串
df.loc[df.i>6, 'price'].shift(-3)
的问题在于它选择了最后四行(索引大于6的行:型
然后它转移那些:
型
bvpmtnay3#
这是另一种方法。
字符串
因此,首先创建新列(price_new),然后应用shift。