这是示例代码。
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]
在list指定的索引位置,我希望A列为“是”。
以下代码有效
df.loc[dl,'A']='Yes'
对于不在索引中的列值,如何用“否”填充列“ A”。 如果这是重复的帖子,请原谅我。
答案 0 :(得分:5)
np.where
我假设有一种更好的方法可以同时执行'Yes'
和'No'
。如果您确实只想在获得'No'
之后填写'Yes'
,请参考Fatemehhh的答案
df.loc[:, 'A'] = np.where(df.index.isin(dl), 'Yes', 'No')
不代表实际建议
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
答案 1 :(得分:1)
一种方法是使用isin函数。 '〜'将反转它,以便输出是不在dl中的元素。
df.loc[~df.index.isin(dl),'A']='No'
答案 2 :(得分:1)
首先用“否”填充“ A”的所有行。然后使用“是”更新/覆盖特定行。
df.loc[:,'A']='No'
df.loc[dl,'A']='Yes'
答案 3 :(得分:1)
通过使用列表dl和df列表本身之间的差异:
df.iloc[list( set(df.index) - set(dl))] = 'No'
或
df.iloc[[x for x in range(len(df)) if x not in dl]] = 'No'