如何根据一组特定参数生成字符串数组?

时间:2019-08-12 21:23:39

标签: python pandas

我正在尝试在Python中生成字符串数组(或可能对我的任务更有用的任何其他数据结构,但我想不起其他任何东西)。

我正在处理的程序有几组单选按钮。例如,一组“阻止” /“备用”和“单个” /“重复”。

有关激活字符串数组的外观的示例:

单块:

list = ['A', 'B', 'C', '1', '2', '3']

单行替代:

list = ['A', '1', 'B', '2', 'C', '3']

替代,重复:

list = ['A', 'A', '1', '1', 'B', 'B', '2', '2', 'C', 'C', '3', '3']

这些仅仅是几个例子,程序有更多的方法,但是概念是相同的。

我需要读取此字符串数组,并将其用作各种模式,以进一步从Pandas Dataframe中选择一些数据。

如何在不为每个可能的组合编写if子句的情况下生成此数组?

1 个答案:

答案 0 :(得分:0)

我尝试使用Jupyter Notebook和一些用于用户交互的小部件来解决此问题。我不知道您如何获得这些信息,但是要复制我正在使用的相同行为。

In [1]:
import ipywidgets as widgets # Widgets for user interactions

## Change the list as you want
my_list = ['A', 'B', 'C', '1', '2', '3']

single_duplicate = widgets.ToggleButtons(
    description='Do you want to Duplicate the list ?',
    options=['Single', 'Duplicate'],
    value='Single',
    style={'description_width': 'initial'}
)
single_duplicate

Out [1]:

enter image description here

In [2]:
block_alter = widgets.ToggleButtons(
    description='Do you want to Alternate the list?',
    options=['Block', 'Alternate'],
    value='Block',
    style={'description_width': 'initial'}
)

block_alter

Out [2]:

enter image description here

然后定义使用用户输入操作列表的功能

In [3]:
def get_array(single_duplicate, block_alter, my_list):
    temporary_list = []
    ## Answer to Single or Duplicate
    if single_duplicate == 'Duplicate':
        for elem in my_list:
            temporary_list.append(elem)
            temporary_list.append(elem)
    else:
        temporary_list = my_list

    ## Answer to Block or Aternate ?
    new_list = []
    if block_alter == 'Alternate':
        half = int(len(temporary_list)/2)
        for i in range(half):
            new_list.append(temporary_list[i])
            new_list.append(temporary_list[i + half])
    else:
        new_list = temporary_list
    return new_list

使用get_array(single_duplicate.value, block_alter.value, my_list)查看用户选择的输出

这里有一些例子

In [3]:
print(get_array('Single', 'Block', my_list))
print(get_array('Duplicate', 'Block', my_list))
print(get_array('Single', 'Alternate', my_list))
print(get_array('Duplicate', 'Alternate', my_list))

Out [3]:
['A', 'B', 'C', '1', '2', '3']
['A', 'A', 'B', 'B', 'C', 'C', '1', '1', '2', '2', '3', '3']
['A', '1', 'B', '2', 'C', '3']
['A', '1', 'A', '1', 'B', '2', 'B', '2', 'C', '3', 'C', '3']