| user | category | val |
| ------ | ------------------| -----|
| user 1 | c1 | 3 |
| user 1 | c2 | 4 |
| user 1 | c3 | 8 |
| user 2 | c1 | 5 |
| user 2 | c2 | 9 |
| user 2 | c3 | 10 |
假设我想将函数 f 应用于 val 列。例如,返回数据帧的最佳方式是什么,以便 f 仅应用于类别为 c1 的值?
| user | category | val |
| ------ | ------------------| ----- |
| user 1 | c1 | f(3) |
| user 1 | c2 | 4 |
| user 1 | c3 | 8 |
| user 2 | c1 | f(5) |
| user 2 | c2 | 9 |
| user 2 | c3 | 10 |
最佳答案
使用numpy.where
:
df['val'] = np.where(df['category'] == 'c1', df['val'].apply(f), df['val'])
或者用loc
过滤:
mask = df['category'] == 'c1'
df.loc[mask, 'val'] = df.loc[mask, 'val'].apply(f)
关于python - 仅在特定行的列上应用 pandas 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261740/