Python 有条件地更改每个索引和列中数据帧的值的最快方法是什么?
有没有一种方法可以在不使用循环的情况下,将验证条件(包括其自身值)的数据帧的每个元素减少常量 例如,每个小于2的单元格看到其值减少1 非常感谢。我喜欢做这个。 下面是一个使用您的示例的低效循环Python 有条件地更改每个索引和列中数据帧的值的最快方法是什么?,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,有没有一种方法可以在不使用循环的情况下,将验证条件(包括其自身值)的数据帧的每个元素减少常量 例如,每个小于2的单元格看到其值减少1 非常感谢。我喜欢做这个。 下面是一个使用您的示例的低效循环 #Example using loop for val in df['column']: if(val<2): val = val - 1 #使用循环的示例 对于df[“列”]中的val: 如果(val我不确定这是否是最快的,但您可以使用.apply函数: i
#Example using loop
for val in df['column']:
if(val<2):
val = val - 1
#使用循环的示例
对于df[“列”]中的val:
如果(val我不确定这是否是最快的,但您可以使用.apply函数:
import pandas as pd
df = pd.DataFrame(data=np.array([[1,2,3], [2,2,2], [4,4,4]]),
columns=['x', 'y', 'z'])
def conditional_add(x):
if x > 2:
return x + 2
else:
return x
df['x'] = df['x'].apply(conditional_add)
将在x列的最后一行添加2。更像(来自Willie的数据)
df-((df在本例中,我将使用NumPy库中的np.where
方法。
该方法使用以下逻辑:
np.其中(,)
例如:
# import modules which are needed
import pandas as pd
import numpy as np
# create exmaple dataframe
df = pd.DataFrame({'A':[3,1,5,0.5,2,0.2]})
| A |
|-----|
| 3 |
| 1 |
| 5 |
| 0.5 |
| 2 |
| 0.2 |
# apply the np.where method with conditional statement
df['A'] = np.where(df.A < 2, df.A - 1, df.A)
| A |
|------|
| 3 |
| 0.0 |
| 5 |
| -0.5 |
| 2 |
| -0.8 |`
#导入所需的模块
作为pd进口熊猫
将numpy作为np导入
#创建exmaple数据帧
df=pd.DataFrame({'A':[3,1,5,0.5,2,0.2]})
|A|
|-----|
| 3 |
| 1 |
| 5 |
| 0.5 |
| 2 |
| 0.2 |
#使用条件语句应用np.where方法
df['A']=np.where(df.A<2,df.A-1,df.A)
|A|
|------|
| 3 |
| 0.0 |
| 5 |
| -0.5 |
| 2 |
| -0.8 |`
我相信有一些方法,但是,您想向我们展示一些示例数据吗?。应用
被认为是缓慢的。您应该始终更喜欢在熊猫数据帧上进行内置矢量化操作。这是一个方便的“最后手段”功能
df-((df<2)*2)
Out[727]:
x y z
0 -1 2 3
1 2 2 2
2 4 4 4
# import modules which are needed
import pandas as pd
import numpy as np
# create exmaple dataframe
df = pd.DataFrame({'A':[3,1,5,0.5,2,0.2]})
| A |
|-----|
| 3 |
| 1 |
| 5 |
| 0.5 |
| 2 |
| 0.2 |
# apply the np.where method with conditional statement
df['A'] = np.where(df.A < 2, df.A - 1, df.A)
| A |
|------|
| 3 |
| 0.0 |
| 5 |
| -0.5 |
| 2 |
| -0.8 |`