Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于符号将列中的值拆分为新行_Python_Pandas_Dataframe - Fatal编程技术网

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