Skip to main content
 首页 » 编程设计

Python Pandas 在单个单元格中进行计算

2025年05月04日18Free-Thinker

我有一个 TYPE 列 和一个 VOLUME 列 如果首先检查 TYPE column == 'var1'

,我想要做什么

如果是这样,我想在 VOLUME 列中进行计算。

到目前为止,我有这样的东西:

data.loc[data['TYPE'] == 'var1', ['VOLUME']] * 2 
data.loc[data['TYPE'] == 'var1', ['VOLUME']] * 4 

这似乎是将满足条件的整个列设置为最后一个变量。所以我最终只有两个值。

输出:

4 
4 
4 
4 
8 
8 
8 

另一种选择:

data['VOLUME'] = data.loc[data['TYPE'] == 'var1', ['VOLUME']] * 2 

这适用于第一个条件,但对第二个条件显示 NaN 然后当我运行时:

data['VOLUME'] = data.loc[data['TYPE'] == 'var2', ['VOLUME']] * 4 

整列显示为 NaN。

请您参考如下方法:

考虑一个演示正在发生的事情的简单示例。

df = pd.DataFrame({'A': [1, 2, 3]}) 
df 
 
   A 
0  1 
1  2 
2  3 

现在,只修改“A”列中低于 2 的值。所以,试试像

df.loc[df.A < 2, 'A'] * 2 
 
0    2 
Name: A, dtype: int64 

该系列在索引 0 处只有 1 行。如果您尝试将其重新分配,则隐含的假设是其他索引值将重置为 NaN。

df.assign(A=df.loc[df.A < 2, 'A'] * 2) 
 
     A 
0  2.0 
1  NaN 
2  NaN 

我们要做的是仅我们感兴趣的行。最好使用就地修改算术运算符*=:

df.loc[df.A < 2, 'A'] *= 2 

你的情况是

data.loc[data['TYPE'] == 'var1', 'VOLUME'] *= 2