改变行的值

2024-05-15 02:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df,粘贴我关心的行

                                        plan_benefits                                              value
0                    What is the overall\ndeductible?                  $2,000 Individual / $4,000 Family

我想把这个改成下面这样-

 plan_benefits                                              value
0                    medical_deductible_single                  $2,000
1                    medical_deductible_family                  $4,000

更新-:value列中删除了个人和家庭

我在做下面的事-

所以基本上我获取那一行,获取值,创建一个dict并将其追加回我的原始数据帧。完成后,我可以删除前一行。 这样可以吗

 medical_deductible_single = 0
    medical_deductible_family = 0
    for index, row in df_rep.iterrows():
        if row['plan_benefits'] == 'What is the overall\ndeductible?':
            list = row['value'].split('/')
            medical_deductible_single = list[0][:7]
            medical_deductible_family = list[1][:8]

    deductible_dict = {'plan_benefits': ['medical_deductible_single', 'medical_deductible_family'], 'value': [medical_deductible_single, medical_deductible_family]}
    deductible_df = pd.DataFrame(data= deductible_dict)
    df_rep = df_rep.append(deductible_df)

Tags: thedfisvaluefamilywhatdictlist
2条回答

一种方法是

data = pd.DataFrame(df.value.str.split("/",expand=True).unstack().reset_index(drop=True)).rename({0:'value'},axis=1)

data['plan_benefits'] = 'medical_deductible_' + data['value'].str.split().str[1].map({'Individual':'single', 'Family':'family'})

##print(data[['plan_benefits','value']])

               plan_benefits               value
0  medical_deductible_single  $2,000 Individual 
1  medical_deductible_family       $4,000 Family

这里有一个可行的解决方案:

import pandas as pd    

elements = df.value.values[0].split('/')[1] # separates the 'value' entry into two

col_values = []
col_values.append([i for i in elements])
col_values.append(['medical_deductible_' + i for i in ['single','family']])

columns = ['plan_benefits', 'value']
df = pd.DataFrame([{colums[i]:col_values[i] for i in range(len(columns))}])

请注意,这不是很一般,因为您的问题非常特殊(您没有提供有关数据中其他行的信息,它们是否都与您在问题中编写的行相似?)。您必须稍微调整此代码,使其适用于其他不同的行

相关问题 更多 >

    热门问题