python - 通过多个分隔符重塑数据和分隔
问题描述
抱歉,我需要一些关于处理 pandas 数据的帮助。我在excel中有一个大数据集。每个单元格包含几天的数据。我已经用 pandas 加载了数据,但我还没有找到一种将数据分成单个单元格的理想方法。格式是“日期”空格破折号空格“值”管道并重复这样 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'])
解决方案
基本思想是解析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
(理想情况下,您的数据框应该有唯一的列名)。
推荐阅读
- python - Python 与 Excel 宏的交互
- arrays - 对象的静态分配而不是动态引用
- python - Python 为 python-vlc 抛出“找不到模块”错误
- intellij-idea - HotSwapAgent 弹出窗口不再显示
- c# - 如何一一打印数组的所有元素?
- amazon-web-services - 是否可以通过区域 API 网关和 Cloudfront 使用 Body 发出 Get 请求?
- jenkins - 根据分支更改 customWorkspace
- dart - 使用 Flutter 和 Dart 进行后台位置更新
- c# - 如何在我的递归快速排序算法中防止堆栈溢出
- java - 如何正确确定用户是使用时间顺时针还是逆时针拖动我的圆轮滑块?