如何正确地有条件地移动pandas DataFrame中的列?我想移动特定列中对应的“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)
型
2条答案
按热度按时间u7up0aaq1#
一个可能的解决方案是过滤
i > 6
的值,分配给新列并将其移位:字符串
图纸:
型
osh3o9ms2#
要在pandas DataFrame中正确地有条件地移动列,可以使用np.where函数沿着布尔索引来实现所需的结果。以下是您的操作方法:
字符串
输出量:
型