Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蟒蛇熊猫->;在“名称”列中按条件选择_Python_Python 3.x_Pandas_Data Science - Fatal编程技术网

Python 蟒蛇熊猫->;在“名称”列中按条件选择

Python 蟒蛇熊猫->;在“名称”列中按条件选择,python,python-3.x,pandas,data-science,Python,Python 3.x,Pandas,Data Science,我有列名称为“a”、“b”、“c”的dfz’ print(my_df.columns) Index(['a', 'b', 'c', ... 'y', 'z'], dtype='object', name=0) 我有一个函数来决定应该显示哪些列。例如: start = con_start() stop = con_stop() print(my_df.columns >= start) & (my_df <= stop) 我的目标是只显示满足条件的列的数据帧。 如果st

我有列名称为“a”、“b”、“c”的dfz’

print(my_df.columns)
Index(['a', 'b', 'c', ... 'y', 'z'],
  dtype='object', name=0)
我有一个函数来决定应该显示哪些列。例如:

start = con_start()
stop = con_stop()
print(my_df.columns >= start) & (my_df <= stop)
我的目标是只显示满足条件的列的数据帧。 如果start='a'和stop='b',我想要:

0                                      a              b         
index1       index2                                                  
New York     New York           0.000000       0.000000          
California   Los Angeles   207066.666667  214466.666667     
Illinois     Chicago       138400.000000  143633.333333     
Pennsylvania Philadelphia   53000.000000   53633.333333      
Arizona      Phoenix       111833.333333  114366.666667 

您可以使用切片来实现这一点。loc:

 df.loc[:,'a':'b']

生成要显示的柱列表:

cols = [x for x in my_df.columns if start <= x <= stop]

假设
结果
是您的
[true/false]
数组,而
字母
[a…z]

res=[letters[i] for i,r in enumerate(result) if r]
new_df=df[res]

我想使这一点更加可靠,并且尽可能少地假设

选项1
iloc
与数组切片一起使用
假设:

  • my_df.columns.is_unique
    计算结果为
    True
  • 列已按顺序排列

选项2
loc
与布尔切片一起使用
假设:

  • 列值是可比较的

start=con\u start()
停止=控制停止()
c=df.columns.values
m=(开始=c)
df.loc[:,m]

如果您的条件的复杂程度与示例中所示相似,则无需使用任何附加功能,只需进行过滤即可

sweet_and_red_fruit = fruit[(fruit[sweet == 1) & (fruit["colour"] == "red")]
print(sweet_and_red_fruit)
或者如果你只想打印

print(fruit[(fruit[sweet == 1) & (fruit["colour"] == "red")])
start = df.columns.get_loc(con_start())
stop = df.columns.get_loc(con_stop())

df.iloc[:, start:stop + 1]
start = con_start()
stop = con_stop()

c = df.columns.values
m = (start <= c) & (stop >= c)

df.loc[:, m]
sweet_and_red_fruit = fruit[(fruit[sweet == 1) & (fruit["colour"] == "red")]
print(sweet_and_red_fruit)
print(fruit[(fruit[sweet == 1) & (fruit["colour"] == "red")])