重塑数据并通过多个定界符分隔

时间:2019-08-21 11:57:30

标签: python pandas

对不起,但是我需要一些有关熊猫数据处理的帮助。 我在excel中有一个很大的数据集。每个单元格包含几天的数据。我已经用熊猫加载了数据,但是还没有找到一种将其分离为单个单元格的理想方法。 格式为“日期”空间短划线空间“值”管道,并重复20100205-0.10 |

我想分隔单元格,以便我有一个带有日期和下面相应值的单元格。

+-----------+------------------------------------------------------
|   ID      | WBC
+-----------+------------------------------------------------------
|     1     | 20100205 - 0.10 |20100205 - 0.16 |20100205 - 0.21 etc..
+-----------+------------------------------------------------------

Ideal:
+----------+-------------+-------------+------------+
|   ID     |   20100205  |   20100205  |  20100205  |   
+----------+-------------+-------------+------------+
|    1     |     0.10    |    0.16     |    0.21    | 
+----------+-------------+-------------+------------+
from pandas import DataFrame

data = {'ID': ['1'],
        'WBC': ["20100205 - 0.10 |20100205 - 0.16 |20100205 - 0.21 |20100305 - 71.69 |20100306 - 0.27 |20100306 - 0.42 |20100306 - 1.42"]
        }
df = DataFrame (data,columns= ['ID', 'WBC'])

1 个答案:

答案 0 :(得分:1)

基本思路是解析WBC列中的信息,然后根据需要创建新列:

import pandas as pd

data={'ID': ['1'],
        'WBC': ["20100205 - 0.10 |20100205 - 0.16 |20100205 - 0.21 |20100305 - 71.69 |20100306 - 0.27 |20100306 - 0.42 |20100306 - 1.42"]
        }
df=pd.DataFrame(data, columns= ['ID', 'WBC'])

df["WBC"] = df["WBC"].str.split("|")
dates = [x.split(" - ")[0] for x in df.loc[0, "WBC"]]
vals = [x.split(" - ")[1] for x in df.loc[0, "WBC"]]

for i in range(len(dates)):
    df[int(dates[i])] = float(vals[i])

df.drop("WBC", axis=1, inplace=True)
# df.set_index("ID", inplace=True)    # If you want this as your index

这将使您拥有:

df

    ID      20100205     20100305   20100306    20100205    20100305    20100306
0   1           0.21        71.69       1.42        0.21       71.69        1.42

(理想情况下,您的数据框应具有唯一的列名)。