我想做这样的事。选择一个或n个列范围和另一列df_premises = df.iloc[:, 0:8 and 11]相当于df_premises = df.iloc[:, [0,1,2,3,,8,11]]我试过了
df_premises = df.iloc[:, 0:8 and 11]
df_premises = df.iloc[:, [0,1,2,3,,8,11]]
df_premises = df.iloc[:, 0:8, 11]
df_premises = df.iloc[:, 0:8 + 11]
oiopk7p51#
您可以用途:df.iloc[:, lambda x: x.index < 9 or x.index == 11]更简单的解决方案是在此之前定义一个列表,并在iloc中使用该列表。举例来说:
df.iloc[:, lambda x: x.index < 9 or x.index == 11]
iloc
my_range = range(9) my_range.append(11) df_premises = df.iloc[:, my_range]
如pandas documentation中所述,输入必须是以下之一:1.整数,例如5.1.整数的列表或数组,例如[4,3,0]。1.一个带int的slice对象,例如一比七。1.布尔数组。1.具有一个参数(调用Series或DataFrame)的可调用函数,该函数返回用于索引的有效输出你可以使用像df.iloc[:3]这样的简单切片或者像df.iloc[lambda x: x.index % 2 == 0]这样的函数。所以具体到你问的问题,下面将工作:df.iloc[:, lambda x: x.index < 9 or x.index == 11]
df.iloc[:3]
df.iloc[lambda x: x.index % 2 == 0]
smtd7mpg2#
示例:当 * 行号300达到条件 * 时,代码输出**[270:300]**行数:从条件生成窗口
MINUTES_BEFORE_FOR_WINDOW_TIME = 30 rows_valid = df_s[df_s['valid'] ==1 ].index #condition rows_valid_bef = [ np.r_[ i - MINUTES_BEFORE_FOR_WINDOW_TIME: i +1 ] for i in rows_valid ] df_s = df_s.iloc[np.concatenate(rows_valid_bef) ]#one dimension
2条答案
按热度按时间oiopk7p51#
您可以用途:
df.iloc[:, lambda x: x.index < 9 or x.index == 11]
更简单的解决方案是在此之前定义一个列表,并在
iloc
中使用该列表。举例来说:
如pandas documentation中所述,输入必须是以下之一:
1.整数,例如5.
1.整数的列表或数组,例如[4,3,0]。
1.一个带int的slice对象,例如一比七。
1.布尔数组。
1.具有一个参数(调用Series或DataFrame)的可调用函数,该函数返回用于索引的有效输出
你可以使用像
df.iloc[:3]
这样的简单切片或者像df.iloc[lambda x: x.index % 2 == 0]
这样的函数。所以具体到你问的问题,下面将工作:
df.iloc[:, lambda x: x.index < 9 or x.index == 11]
smtd7mpg2#
示例:当 * 行号300达到条件 * 时,代码输出**[270:300]**行数:
从条件生成窗口