在Pandas DataFrame中创建列的用户输入



我有一个熊猫数据帧:

sample_data = {'Sample': ['A', 'B', 'A', 'B'],
                'Surface': ['Top', 'Bottom', 'Top', 'Bottom'],
                'Intensity' : [21, 32, 14, 45]}
sample_dataframe = pd.DataFrame(data=sample_data)

我有一个功能可以获得用户输入,为每个"样本"创建一个带有"条件"的列

def get_choice(df, column):
    #df['Condition'] = user_input
    user_input = []
    for i in df[column]:
        print('n', i)
        user_input.append(input('Condition= '))
    df['Condition'] = user_input
    return df
get_choice(group_fname, 'Sample')

这是有效的,但是对于存在"Sample"的每一行,都会提示用户。在这个示例中,Samples各有两行,这不是问题,但当DataFrame较大并且有多个Samples占用多行时,这会变得乏味。

如何创建一个函数,只需获取一次输入,就可以为"Sample"占用的每一行填充"Condition"列。

我尝试创建一个函数来返回一个字典,然后将其.apply()返回到DataFrame,但当我这样做时,它仍然要求为"Sample"的每个实例输入。

如果我理解你的问题,你只想为每个唯一值获得一次用户输入,然后创建列'Condition':

sample_data = {'Sample': ['A', 'B', 'A', 'B'],
                'Surface': ['Top', 'Bottom', 'Top', 'Bottom'],
                'Intensity' : [21, 32, 14, 45]}
sample_dataframe = pd.DataFrame(data=sample_data)
def get_choice(df, column):
    m = {}
    for v in df[column].unique():
        m[v] = input('Condition for [{}] = '.format(v))
    df['Condition'] = df[column].map(m)
    return df
print( get_choice(sample_dataframe, 'Sample') )

打印(例如(

Condition for [A] = 1
Condition for [B] = 2
  Sample Surface  Intensity Condition
0      A     Top         21         1
1      B  Bottom         32         2
2      A     Top         14         1
3      B  Bottom         45         2

相关内容

  • 没有找到相关文章

最新更新