对不起,但是我需要一些有关熊猫数据处理的帮助。 我在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'])
答案 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
(理想情况下,您的数据框应具有唯一的列名)。