Vis*_*han 2 python dataframe pandas data-science
数据框如下所示:如果年龄超过 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'])
Run Code Online (Sandbox Code Playgroud)
期望的结果
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
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样的事情:
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)
Run Code Online (Sandbox Code Playgroud)
显示错误:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()
我正在寻找一个适用于所有数据帧的循环。
也请更正我的功能以供将来学习:)
使用您显示的样本,请尝试以下操作。使用filter,np.where大熊猫的功能,分别NumPy的。
c = df.filter(regex='age\d+').columns
df[c] = np.where(df[c].ge(100),'dead',df[c])
df
Run Code Online (Sandbox Code Playgroud)
替代方法where:
c=df.filter(like='age').columns
df[c] = df[c].where(~df['c'].ge(100),'dead')
Run Code Online (Sandbox Code Playgroud)
解释:
agec 变量中具有相同名称的列。np.where用于检查相应的(所有年龄列)是否为欢迎者/等于 100,如果是,则将其设置为死或保持原样。| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |