用户输入以在 Pandas DataFrame 中创建列
User input to create a column in Pandas DataFrame
我有一个 pandas 数据框:
sample_data = {'Sample': ['A', 'B', 'A', 'B'],
'Surface': ['Top', 'Bottom', 'Top', 'Bottom'],
'Intensity' : [21, 32, 14, 45]}
sample_dataframe = pd.DataFrame(data=sample_data)
而且我有一个函数可以让用户输入为每个 'Sample'
创建一个带有 'Condition' 的列
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' 的每一行。在这个示例中,每个样本有两行,这不是问题,但是当 DataFrame 较大并且有多个样本占用多行时,它会变得乏味。
我如何创建一个函数来填充 'Sample' 占用的每一行的 'Condition' 列,只需获取一次输入即可。
我尝试将函数创建到 return 字典然后 .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
我有一个 pandas 数据框:
sample_data = {'Sample': ['A', 'B', 'A', 'B'],
'Surface': ['Top', 'Bottom', 'Top', 'Bottom'],
'Intensity' : [21, 32, 14, 45]}
sample_dataframe = pd.DataFrame(data=sample_data)
而且我有一个函数可以让用户输入为每个 'Sample'
创建一个带有 'Condition' 的列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' 的每一行。在这个示例中,每个样本有两行,这不是问题,但是当 DataFrame 较大并且有多个样本占用多行时,它会变得乏味。
我如何创建一个函数来填充 'Sample' 占用的每一行的 'Condition' 列,只需获取一次输入即可。
我尝试将函数创建到 return 字典然后 .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