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实际问题的最有说服力的方式。