Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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 np.where()相当于df.loc()_Python_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python np.where()相当于df.loc()

Python np.where()相当于df.loc(),python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,我正在练习\学习熊猫,我正在使用口袋妖怪数据集 来自卡格尔 以下两行代码工作正常,并产生完全相同的结果: df.loc[df['Type 1'] == 'Fire', 'Type 1'] = 'Flamer' df['Type 1'] = np.where(df['Type 1'] == 'Fire', 'Flamer', df['Type 1']) 两者都将“类型1”列中的值“Fire”替换为“Flamer” 然而,我试图在多个列上复制相同的行为。 在以下两行代码中,第一行有效,第二行失败

我正在练习\学习熊猫,我正在使用口袋妖怪数据集 来自卡格尔

以下两行代码工作正常,并产生完全相同的结果:

df.loc[df['Type 1'] == 'Fire', 'Type 1'] = 'Flamer'

df['Type 1'] = np.where(df['Type 1'] == 'Fire', 'Flamer', df['Type 1'])
两者都将“类型1”列中的值“Fire”替换为“Flamer”

然而,我试图在多个列上复制相同的行为。 在以下两行代码中,第一行有效,第二行失败。 还提供了准确的错误:

df.loc[df['Total'] > 500, ['Generation', 'Legendary']] = 'TEST VALUE'

df[['Generation', 'Legendary']] = np.where(df['Total'] > 500, 'TEST VALUE', df[['Generation', 'Legendary']])
回溯(最近一次呼叫最后一次):
文件“C:/Users/Mark/PycharmProjects/main/main.py”,第152行,在
df[['Generation','general']]=np.其中(df['Total']>500,'TEST VALUE',df[['Generation','general']]
ValueError:操作数无法与形状(800,()(800,2)一起广播
我不明白那个错误想告诉我什么


我不能用np.where()复制:df.loc[df['Total']>500,['Generation','Legendary']]='testvalue'?

正如@Divakar所指出的,我的语法是错误的。df['Total']>500需要是:在我的np.where()代码行中的df['Total']>500

df.loc[df['Total'] > 500, ['Generation', 'Legendary']] = 'TEST VALUE'
已通过以下方式成功复制:

df[['Generation', 'Legendary']] = np.where(df[['Total']] > 500, 'TEST VALUE', df[['Generation', 'Legendary']])
然后我更进一步,给“世代”和“传奇”专栏赋予了它们自己独特的价值

以下两行代码也会生成相同的正确结果:

df.loc[df['Total'] > 500, ['Generation', 'Legendary']] = ['Test 1', 'Test 2']

df[['Generation', 'Legendary']] = np.where(df[['Total']] > 500, [['TEST 1', 'TEST 2']], df[['Generation', 'Legendary']])

正如@Divakar所指出的,我的语法是错误的。df['Total']>500需要是:在我的np.where()代码行中的df['Total']>500

df.loc[df['Total'] > 500, ['Generation', 'Legendary']] = 'TEST VALUE'
已通过以下方式成功复制:

df[['Generation', 'Legendary']] = np.where(df[['Total']] > 500, 'TEST VALUE', df[['Generation', 'Legendary']])
然后我更进一步,给“世代”和“传奇”专栏赋予了它们自己独特的价值

以下两行代码也会生成相同的正确结果:

df.loc[df['Total'] > 500, ['Generation', 'Legendary']] = ['Test 1', 'Test 2']

df[['Generation', 'Legendary']] = np.where(df[['Total']] > 500, [['TEST 1', 'TEST 2']], df[['Generation', 'Legendary']])

尝试:
np.where(df['Total'].values[:,None]>500,…
。或者甚至-
np.where(df['Total']>500.
。或者尝试使用.where frompandas@Divakar,就是这样。请重新发布,以便我可以接受作为答案。@MarkS会鼓励您将自己的发现作为自我答案发布。请随意使用代码从发布的评论中。尝试:
np.where(df['Total'].values[:,None]>500,…
。或者甚至-
np.where(df['Total']]>500..
。或者尝试使用.where frompandas@Divakar,就是这样。请重新发布,以便我可以接受作为答案。@MarkS会鼓励您将自己的发现作为自我答案发布。请随意使用代码(s) 从张贴的评论。