Python 基于符号将列中的值拆分为新行
我有以下表格中的数据框:Python 基于符号将列中的值拆分为新行,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下表格中的数据框: A B C D car 100 EUR T train 20/r25 EUR/rUSD F e-bike 10/r21 EUR/rGBP F 我想拆分此/r符号上的那些列(包含该符号的那些列),以便复制其他列,如结果df所示: 结果df: A B C D car 100 EUR T train 20 EUR F tra
A B C D
car 100 EUR T
train 20/r25 EUR/rUSD F
e-bike 10/r21 EUR/rGBP F
我想拆分此/r
符号上的那些列(包含该符号的那些列),以便复制其他列,如结果df所示:
结果df:
A B C D
car 100 EUR T
train 20 EUR F
train 25 USD F
e-bike 10 EUR F
e-bike 21 GBP F
使用所有未拆分的列创建
索引
或多索引
,然后在每列中,将多索引
转换为列,并按原始列的顺序添加,以及删除级别
列:
df1 = (df.set_index(['A', 'D'])
.apply(lambda x: x.str.split('/r', expand=True).stack())
.reset_index()
.reindex(df.columns, axis=1))
print (df1)
A B C D
0 car 100 EUR T
1 train 20 EUR F
2 train 25 USD F
3 e-bike 10 EUR F
4 e-bike 21 GBP F
编辑:
多栏怎么样?所以我认为这不应该把“A”设为索引?我更新了这个问题。我得到了错误:
无法处理非唯一的多索引
@AlexT-你能检查一下df1=(df.reset\u index(drop=True)。set\u index(['A','D'])。apply(lambda x:x.str.split('/r',expand=True)。stack()。reset\u index()。reindex(df.columns,axis=1))print(df1)
?是的,我可以从real发送样品dataset@AlexT-答案已编辑,但我的数据中没有错误:(
df1 = (df.set_index(['D','E', 'F','G'])
.apply(lambda x: x.str.split('\r', expand=True).stack(dropna=False))
.reset_index()
.reindex(df.columns, axis=1)
)
print (df1)
A B C D E \
0 NUMER DATA WAL OKRESY WIEKOWANIA W DNIACH NaN
1 DOKUMENTU OPERACJI UTA OKRESY WIEKOWANIA W DNIACH NaN
2 NaN NaN NaN do 90 od 91 do 180
3 NaN NaN NaN do 90 od 91 do 180
4 NaN 2015-03-09 EUR NaN NaN
5 NaN None PLN NaN NaN
6 NaN 2015-12-07 EUR NaN NaN
7 NaN None PLN NaN NaN
F G H
0 NaN NaN NaN
1 NaN NaN NaN
2 od 181 do 270 od 271 do 360 od 361
3 od 181 do 270 od 271 do 360 None
4 NaN NaN 10,56
5 NaN NaN 43,60
6 NaN NaN 1 368,24
7 NaN NaN 5 902,72