Tom*_*url 4 python csv types dataframe pandas
我正在使用pandas Python模块生成数据透视表报告.源数据包括以毫秒为单位测量的大量读数.如果毫秒数超过999,那么该CSV文件中的值将包含逗号(例如1,234 = 1.234秒).
这是我试图运行报告的方式:
import pandas as pd
import numpy as np
pool_usage = pd.read_csv("c:/foo/ds-dump.csv")
# Add a column to the end that shows you where the data came from
pool_usage["Source File"] = "ds-dump.csv"
report = pool_usage.pivot_table(values=['Average Pool Size', 'Average Usage Time (ms)'], index=['Source File'], aggfunc=np.max)
print(report)
Run Code Online (Sandbox Code Playgroud)
问题是,平均使用时间(ms)的dtype 是一个对象,所以该np.max函数只是将它视为NaN.因此,我从未看到任何大于999的值.
我试着解决这个问题:
import pandas as pd
import numpy as np
pool_usage = pd.read_csv("c:/foo/ds-dump.csv")
# Add a column to the end that shows you where the data came from
pool_usage["Source File"] = "ds-dump.csv"
# Convert strings to numbers if possible
pool_usage = pool_usage.convert_objects(convert_numeric=True)
report = pool_usage.pivot_table(values=['Average Pool Size', 'Average Usage Time (ms)'], index=['Source File'], aggfunc=np.max)
print(report)
Run Code Online (Sandbox Code Playgroud)
这实际上确实将" 平均使用时间"列的dtype更改为float,但所有大于999的值仍然被视为NaN.
如何将" 平均使用时间"列转换为浮点数,即使某些值可能包含逗号?
该read_csv函数采用可选thousands参数.它的默认设置是None,您可以将其更改为","将其识别1,234为1234读取文件时:
pd.read_csv("c:/foo/ds-dump.csv", thousands=",")
Run Code Online (Sandbox Code Playgroud)
int64一旦文件被读入内存,保存毫秒值的列应该具有数据类型.
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |