我有一个dataframe,看起来像这样:
data1 = [{'price2022': "12014\n205****", 'company': "toyota",'price2023': "10014\n180****"},
{'price2022': "22018", 'company': "apple",'price2023': "22018"},
{'price2022': "32020", 'company': "general electric",'price2023': "31020"},
{'price2022': "80170", 'company': "alibaba",'price2023': "83170"}
]
df1 = pd.DataFrame(data1)
第一个值是一个多行字符串,其中还包含冗余字符串''。我希望使用两行之和的单行编号,而不是多行字符串“12014\n205”。(12014+205=12219)。
我可以试试这样的东西:
dfa[['b', 'c']] = df1["price2022"].apply(lambda x: pd.Series(str(x).split("\n")))
dfa['c'] = dfa['c'].map(lambda x: str(x)[:-4]) #gets rid of the ****, probably not the smartest method
dfa['b']= dfa['b'].astype('int')
dfa['c'].replace('', 0, inplace=True)
dfa['c']= dfa['c'].astype('int')
dfa['d']=dfa['b']+dfa['c']
然而,这似乎非常低效。更不用说我有几个'价格'专栏我需要浏览。为每个变量创建新的变量似乎是一种糟糕的处理方法。有没有更有效的方法来实现这一点,而不创建多个新列?我该如何扩展它,使我不必去看哪些列有这些多行,哪些没有,但代码只是运行所有?
2条答案
按热度按时间bnl4lu3b1#
您可以尝试:
它给出:
0aydgbwb2#
你可以在你的列上循环,并应用一个函数来拆分/求和价格:
输出: