gpt4 book ai didi

python - 根据条件提取列值

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:00 25 4
gpt4 key购买 nike

我有以下数据框

df = pd.DataFrame({
'Column_1': ['Position', 'Start', 'End', 'Position'],
'Original_1': ['Open', 'Barn', 'Grass', 'Bubble'],
'Latest_1': ['Shut', 'Horn', 'Date', 'Dinner'],
'Column_2': ['Start', 'Position', 'End', 'During'],
'Original_2': ['Sky', 'Hold', 'Car', 'House'],
'Latest_2': ['Pedal', 'Lap', 'Two', 'Force'],
'Column_3': ['Start', 'End', 'Position', 'During'],
'Original_3': ['Leave', 'Dog', 'Block', 'Hope'],
'Latest_3': ['Sear', 'Crawl', 'Enter', 'Night']
})

对于“Column_1”、“Column_2”或“Column_3”中单词 Position 的每个实例,我想捕获“Original_1”、“Original_2”、“Original_3”中的关联值并将它们分配给新的名为“Original_Values”的列。

以下代码可以实现这一点,但只能逐列进行。

df['Original_Value1'] = df.loc[df['Column_1'] == 'Position', 'Original_1']
df['Original_Value2'] = df.loc[df['Column_2'] == 'Position', 'Original_2']
df['Original_Value3'] = df.loc[df['Column_3'] == 'Position', 'Original_3']

有没有办法重新创建上面的代码,以便它遍历整个数据框(而不是按指定的列)?

我希望创建一个具有以下结果的列 ('Original_values'):

0      Open
1 Hold
2 Block
3 Bubble
Name: Original_Values, dtype: object

最佳答案

一种方法,使用 df.apply() :

def choose_orig(row):
if row['Column_1'] == 'Position':
return row['Original_1']
elif row['Column_2'] == 'Position':
return row['Original_2']
elif row['Column_3'] == 'Position':
return row['Original_3']
return ''

df['Original_Values'] = df.apply(choose_orig, axis=1)

df.apply()axis=1 参数导致 choose_orig() 函数被调用一次数据框。

请注意,当没有列与单词 'Position' 匹配时,这将使用空字符串的默认值 ''

关于python - 根据条件提取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com