转换后如何更新数据框的列?

时间:2019-05-07 21:21:21

标签: python pandas transformation cut cat

我有以下数据框

      age  sex   cp 
0    63.0  1.0  1.0
1    67.0  1.0  4.0
2    41.0  0.0  2.0

然后在每一列上应用转换过程,如下所示:

age = store_data['age']
age_bins = [0, 40, 60, 100]
age_categories = pd.cut(age, age_bins)

sex = store_data['sex']
sex_series = pd.Series(sex, dtype = "category")
sex_rename = sex_series.cat.rename_categories(['F','M'])


cp = store_data['cp']
cp_series = pd.Series(cp, dtype = "category")
cp_rename = cp_series.cat.rename_categories(["typical","atypical","non-anginal","asymptomatic"])

每个的输出如下:

>>age_categories
0      (60, 100]
1      (60, 100]
2       (40, 60]

>>sex_rename
0      M
1      M
4      F

>>cp_rename
0           typical
1      asymptomatic
2          atypical

如何使用新的转换后的值更新原始列:age_categories,sex_rename,cp_rename?我想保留旧的名字(年龄,性别,cp)为首

2 个答案:

答案 0 :(得分:2)

尝试消除多余的变量?由于没有数据,因此我没有执行此操作,但这应该直接更新您的数据框。

age_bins = [0, 40, 60, 100]
store_data['age'] = pd.cut(store_data['age'], age_bins)

__

store_data['sex'] = pd.Series(store_data['sex'], dtype = "category").cat.rename_categories(['F','M'])

__

store_data['cp'] = pd.Series(store_data['cp'], dtype = "category").cat.rename_categories(["typical","atypical","non-anginal","asymptomatic"])

答案 1 :(得分:1)

我这样尝试过:

age = store_data["age"]
age_bins = [0, 40, 60, 100]
age_categories = pd.cut(age, age_bins)

sex = store_data['sex']
sex_series = pd.Series(sex, dtype = "category")
sex_rename = sex_series.cat.rename_categories(['F','M'])


cp = store_data['cp']
cp_series = pd.Series(cp, dtype = "category")
cp_rename = cp_series.cat.rename_categories(["typical","atypical","non-anginal"])

print(age_categories)
print(sex_rename)
print(cp_rename)

store_data['age']=age_categories
store_data['sex']=sex_rename
store_data['cp']=cp_rename

print(store_data)

         age sex           cp
0  (60, 100]   M      typical
1  (60, 100]   M  non-anginal
2   (40, 60]   F     atypical