【问题标题】:Replacing loop based col creation [duplicate]替换基于循环的col创建[重复]
【发布时间】:2020-09-27 04:55:39
【问题描述】:

假设我有df:

df = pd.DataFrame({'col1': ['A', 'B', 'C', 'D', 'E']})

还有d:

d = {'A': 1, 'B': 2}

我想创建df['col2'],以便从d 中获取值(如果它们存在),如果不存在,则用一些填充值(例如3)来均衡它们。我可以这样做:

df['col2'] = pd.Series(np.NaN)

for k, v in d.items():
    df['col2'] = np.where(df['col1']==k, v, df['col2'])

df['col2'] = df.col2.fillna(3)

这给了我:

df
    col1    col2
0   A       1.0
1   B       2.0
2   C       3.0
3   D       3.0
4   E       3.0

我的问题是:是否有可能不使用像 do 这样的循环来实现这一点?

【问题讨论】:

  • 使用df['col2'] = df.col2.map(d).fillna(3)

标签: python pandas numpy dataframe for-loop


【解决方案1】:

你可以使用

df['col1'].map(d).fillna(3)

为新列创建值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2019-09-18
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多