如何在整个数据框/所有列上应用条件
How to apply a condition on the entire dataframe/ all columns
我有一个 14 行 × 1500 列的数据框,其中只包含数值。我想应用一个简单的条件,如果整个数据框中的任何值都超过某个数字,比如 25,则将这些值替换为 1,否则替换为 0。我找到了一些可以执行此类操作的解决方案,但我有指定列名,但我找不到任何可以在整个数据帧上执行一个条件的解决方案。
df[0.0] = df[0.0].apply(lambda x: 1 if x >=25 else 0)
这适用于特定列,但
df = df[:,:].apply(lambda x: 1 if x >=25 else 0)
不起作用。有人可以帮忙吗?
您可以使用 pandas.DataFrame.applymap
按照以下方式将函数应用于每个元素
import pandas as pd
df = pd.DataFrame({'col1':[0,10,100],'col2':[0,50,500]})
df2 = df.applymap(lambda x: 1 if x >=25 else 0)
print(df2)
输出
col1 col2
0 0 0
1 0 1
2 1 1
在这种特殊情况下,您可能会 df2
其他方式,即
df2 = (df >= 25).astype(int)
它首先创建 pandas.DataFrame
个布尔值,然后将其转换为 int
s(False
到 0
,True
到 1
)
与applymap()
关联的函数应用于给定DataFrame的所有元素,因此applymap()
方法仅为DataFrame定义。
类似地,与apply()
方法关联的函数可以应用于DataFrame或Series的所有元素,因此为Series和DataFrame对象定义了apply()
方法。
只能为Pandas中的Series对象定义map()
方法。
因此,您必须使用 applymap()
而不是 apply()
。
你可以试试
df = np.where(df >= 25, 1, 0)
这应该可以让您动态找到 x > 25 的位置并使用相同的列名设置新的
data = {
'Column1' : [1, 26, 3, 27],
'Column2' : [25, 26, 1, 1]
}
df = pd.DataFrame(data)
df_new = pd.DataFrame(np.where(df > 25, 1, 0), columns = df.columns)
df_new
我有一个 14 行 × 1500 列的数据框,其中只包含数值。我想应用一个简单的条件,如果整个数据框中的任何值都超过某个数字,比如 25,则将这些值替换为 1,否则替换为 0。我找到了一些可以执行此类操作的解决方案,但我有指定列名,但我找不到任何可以在整个数据帧上执行一个条件的解决方案。
df[0.0] = df[0.0].apply(lambda x: 1 if x >=25 else 0)
这适用于特定列,但
df = df[:,:].apply(lambda x: 1 if x >=25 else 0)
不起作用。有人可以帮忙吗?
您可以使用 pandas.DataFrame.applymap
按照以下方式将函数应用于每个元素
import pandas as pd
df = pd.DataFrame({'col1':[0,10,100],'col2':[0,50,500]})
df2 = df.applymap(lambda x: 1 if x >=25 else 0)
print(df2)
输出
col1 col2
0 0 0
1 0 1
2 1 1
在这种特殊情况下,您可能会 df2
其他方式,即
df2 = (df >= 25).astype(int)
它首先创建 pandas.DataFrame
个布尔值,然后将其转换为 int
s(False
到 0
,True
到 1
)
与applymap()
关联的函数应用于给定DataFrame的所有元素,因此applymap()
方法仅为DataFrame定义。
类似地,与apply()
方法关联的函数可以应用于DataFrame或Series的所有元素,因此为Series和DataFrame对象定义了apply()
方法。
只能为Pandas中的Series对象定义map()
方法。
因此,您必须使用 applymap()
而不是 apply()
。
你可以试试
df = np.where(df >= 25, 1, 0)
这应该可以让您动态找到 x > 25 的位置并使用相同的列名设置新的
data = {
'Column1' : [1, 26, 3, 27],
'Column2' : [25, 26, 1, 1]
}
df = pd.DataFrame(data)
df_new = pd.DataFrame(np.where(df > 25, 1, 0), columns = df.columns)
df_new