我试图找到一个简单的方法,打破了以下数据框:副本排在熊猫数据帧
COL_A COL_B COL_C COL_D
VAL1 VAL2 VAL3 OFFER1|OFFER2|OFFER3
到
COL_A COL_B COL_C COL_D COL_Y
VAL1 VAL2 VAL3 ... OFFER1
VAL1 VAL2 VAL3 ... OFFER2
VAL1 VAL2 VAL3 ... OFFER3
我试图找到一个简单的方法,打破了以下数据框:副本排在熊猫数据帧
COL_A COL_B COL_C COL_D
VAL1 VAL2 VAL3 OFFER1|OFFER2|OFFER3
到
COL_A COL_B COL_C COL_D COL_Y
VAL1 VAL2 VAL3 ... OFFER1
VAL1 VAL2 VAL3 ... OFFER2
VAL1 VAL2 VAL3 ... OFFER3
让我们用pd.concat
,str.split
和fillna
:
pd.concat([df,df.COL_D.str.split('|',expand=True).T],axis=1).rename(columns={0:'COL_Y'}).fillna(method='ffill')
输出:
COL_A COL_B COL_C COL_D COL_Y
0 VAL1 VAL2 VAL3 OFFER1|OFFER2|OFFER3 OFFER1
1 VAL1 VAL2 VAL3 OFFER1|OFFER2|OFFER3 OFFER2
2 VAL1 VAL2 VAL3 OFFER1|OFFER2|OFFER3 OFFER3
这看起来很有前途,但我很获得520,000行左右的MemoryError。内存密集? –
并不是极端的,你的行可能因数据而爆炸。 –
我甚至把它缩减到:索引80 RO_NUMBER 4104184 VIN 4104184 优惠4104184 dtype:int64和我仍然得到memoryError与大量的内存 –
希望链接帮助https://stackoverflow.com/questions/35166359/how-to-unnest-cells-in-a-dataframe-employing-pandas-and-python – Wen