【发布时间】:2021-07-19 21:44:35
【问题描述】:
数据框如下:如果年龄超过 100,我想将数据框值更改为“死亡”。
import pandas as pd
raw_data = {'age1': [23,45,210],'age2': [10,20,150],'name': ['a','b','c']}
df = pd.DataFrame(raw_data, columns = ['age1','age2','name'])
raw_data = {'age1': [80,90,110],'age2': [70,120,90],'name': ['a','b','c']}
df2 = pd.DataFrame(raw_data, columns = ['age1','age2','name'])
期望的结果
df=
age1 age2 name
0 23 10 a
1 45 20 b
2 dead dead c
df2=
age1 age2 name
0 80 70 a
1 90 dead b
2 dead 90 c
我正在尝试这样的事情:
col_list=['age1','age2']
df_list=[df,df2]
def dead(df):
for df in df_list:
if df.columns in col_list:
if df.columns >=100:
return 'dead'
else:
return df.columns
df.apply(dead)
显示错误: 具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()
我正在寻找一个适用于所有数据帧的循环。
请更正我的功能以供将来学习:)
【问题讨论】:
-
错误是说你试图在数组上使用逻辑而不是它不能做的值。例如,如果值 == 0;只要它不是一个值数组,这对价值是有好处的。
-
你也有 def dead(df) 但也在 df_list 中使用 df。因此,您有 df 两次。这很混乱,不建议这样做。它可能会导致问题。更改其中一个及其相关变量。
-
另外,使用 where 子句代替遍历 pandas 数据帧。遍历 pandas 的规模非常可怕。 geeksforgeeks.org/python-pandas-dataframe-where
-
谢谢,我实际上是在寻找一个 for 循环,因为我无法在数据框列表上应用这个乐趣。
标签: python pandas dataframe data-science