gpt4 book ai didi

python - 在 Pandas 中应用转换并连接现有数据框中的多个列以形成新的数据框

转载 作者:行者123 更新时间:2023-11-30 22:09:12 25 4
gpt4 key购买 nike

假设我有一个如下所示的数据框:

import pandas as pd

df1 = pd.DataFrame({
'A' : ['foo ', 'b,ar', 'fo...o', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],
})

我想创建一个新数据框df2,它是 df1 中“A”列和“B”列的串联形式其中每个数据都是大写的。这是一个玩具示例,在我的用例中,我可能还拥有比“A”和“B”列更多的列,因此我想将列列表设为变量(即,列的名称)该列可能会有所不同)。

def tokenize(s):
# replaces comma with space; removes non-alphanumeric chars; etc.
return re.sub('[^0-9a-zA-Z\s]+', '', re.sub('[,]+', ' ', s)).lower().split()

df2 = pd.DataFrame() # create a new dataframe; not sure if I'm doing this right
cols_to_concat = ['A','B'] # there can be more than two columns in this list
for col in cols_to_concat:
df2 = df1[col].apply(tokenize).apply(str.upper)
print(df2)
# here, I'd like the df2 to have just ONE column whose rows are 'FOOONE', 'BARONE', 'FOOTWO', 'BARTHREE','FOOTWO', 'BARTWO','FOOONE','FOOTHREE',...

最佳答案

简短版本

list_o_cols = ['A', 'B']

df1[list_o_cols].sum(1).str.upper()

0 FOOONE
1 BARONE
2 FOOTWO
3 BARTHREE
4 FOOTWO
5 BARTWO
6 FOOONE
7 FOOTHREE
dtype: object
<小时/>
df2 = df1[list_o_cols].sum(1).str.upper().str.replace('O', '').to_frame('col_name')
df2

col_name
0 FNE
1 BARNE
2 FTW
3 BARTHREE
4 FTW
5 BARTW
6 FNE
7 FTHREE

关于python - 在 Pandas 中应用转换并连接现有数据框中的多个列以形成新的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51994117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com