Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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 熊猫-替换基于索引而非索引中的值_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫-替换基于索引而非索引中的值

Python 熊猫-替换基于索引而非索引中的值,python,pandas,dataframe,Python,Pandas,Dataframe,下面是示例代码 import pandas as pd, numpy as np df = pd.DataFrame(np.random.randint(0,100,size=(10, 1)), columns=list('A')) 我有一个列表dl=[0,2,3,4,7] 在列表指定的索引位置,我希望A列为Yes 下面的代码可以工作 df.loc[dl,'A']='Yes' 对于不在索引中的列值,如何用“否”填充列“A”。 如果这是一篇重复的文章,请原谅我 一种方法是使用isin函数将其

下面是示例代码

import pandas as pd, numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(10, 1)), columns=list('A'))
我有一个列表dl=[0,2,3,4,7]

在列表指定的索引位置,我希望A列为Yes

下面的代码可以工作

df.loc[dl,'A']='Yes'
对于不在索引中的列值,如何用“否”填充列“A”。
如果这是一篇重复的文章,请原谅我

一种方法是使用isin函数将其反转,以便输出不在dl中的元素

df.loc[~df.index.isin(dl),'A']='No'

一种方法是使用isin函数将其反转,以便输出不在dl中的元素

df.loc[~df.index.isin(dl),'A']='No'

首先用“否”填充A的所有行,然后用“是”更新/覆盖特定行

df.loc[:,'A']='No'
df.loc[dl,'A']='Yes'

首先用“否”填充A的所有行,然后用“是”更新/覆盖特定行

df.loc[:,'A']='No'
df.loc[dl,'A']='Yes'
np.在哪里 我假设有一种更好的方法可以同时做“是”和“否”。如果你真的只想在得到“是”后填写“否”,那么请参考“否”的答案

实验段 不是为了实际的建议

f = dl.__contains__
g = ['No', 'Yes'].__getitem__
df.loc[:, 'A'] = [*map(g, map(f, df.index))]

df

     A
0  Yes
1   No
2  Yes
3  Yes
4  Yes
5   No
6   No
7  Yes
8   No
9   No
np.在哪里 我假设有一种更好的方法可以同时做“是”和“否”。如果你真的只想在得到“是”后填写“否”,那么请参考“否”的答案

实验段 不是为了实际的建议

f = dl.__contains__
g = ['No', 'Yes'].__getitem__
df.loc[:, 'A'] = [*map(g, map(f, df.index))]

df

     A
0  Yes
1   No
2  Yes
3  Yes
4  Yes
5   No
6   No
7  Yes
8   No
9   No

通过使用列表dl和df列表本身之间的差异:

df.iloc[list( set(df.index) - set(dl))]  = 'No'


通过使用列表dl和df列表本身之间的差异:

df.iloc[list( set(df.index) - set(dl))]  = 'No'


索引对象已经有了一个不同的方法。所以这应该是可行的:df.loc[df.index.differencedl,'A']='No'有趣的是,loc可以很好地处理集合。为了缩短语法,用一点set-literal解包,甚至不知道如何称呼这个df.loc[{*df.index}-{*dl},'a']='No',另外,我认为这是回答OP实际问题的最有说服力的方法。pandas.index对象已经有了一个不同的方法。所以这应该是可行的:df.loc[df.index.differencedl,'A']='No'有趣的是,loc可以很好地处理集合。为了缩短语法,用一点set-literal解包,甚至不知道这个df.loc[{*df.index}-{*dl},'a']='No',另外,我认为这是回答OP实际问题的最有说服力的方式。