Python 数据争论问题

标签 python pandas unique dataframe

我目前对小型数据集的一些基本问题感到困惑。以下是说明数据格式的前三行:

“运动”,“条目”,“Contest_Date_EST”,“地点”,“积分”,“Winnings_Non_Ticket”,“Winnings_Ticket”,“Contest_Entries”,“Entry_Fee”,“Prize_Pool”,“Places_Paid”

"NBA","NBA 3K Crossover #3 [3,000 保证](仅限早期)(1/15)","2015-03-01 13:00:00",35,283.25,"13.33","0.00",171,"20.00","3,000.00",35

"NBA","NBA 1,500 上篮 #4 [1,500 保证](仅限早期)(1/25)","2015-03-01 13:00:00",148,283.25,"3.00","0.00",862,"2.00","1,500.00",200

我在使用 read_csv 创建 DataFrame 后遇到的问题:

  1. 某些分类值(例如 Prize_Pool)中存在逗号会导致 python 将这些条目视为字符串。我需要将它们转换为 float 才能进行某些计算。我已经使用 python 的 replace() 函数去除了逗号,但我目前仅能做到这一点。

  2. 类别 Contest_Date_EST 包含时间戳,但有些是重复的。我想将整个数据集子集化为一个只有唯一时间戳的数据集。能够选择删除重复条目或删除条目会很好,但目前我只想能够使用唯一时间戳过滤数据。

最佳答案

对包含逗号的数字使用 thousands=',' 参数

In [1]: from pandas import read_csv
In [2]: d = read_csv('data.csv', thousands=',')

可以查看Prize_Pool是数值

In [3]: type(d.ix[0, 'Prize_Pool'])
Out[3]: numpy.float64

要删除行 - 先取观察到的,也可以取最后

In [7]: d.drop_duplicates('Contest_Date_EST', take_last=False)
Out[7]:
  Sport                                              Entry  \
0   NBA  NBA 3K Crossover #3 [3,000 Guaranteed] (Early ...

      Contest_Date_EST  Place  Points  Winnings_Non_Ticket  Winnings_Ticket  \
0  2015-03-01 13:00:00     35  283.25                13.33                0

   Contest_Entries  Entry_Fee  Prize_Pool  Places_Paid
0              171         20        3000           35

关于Python 数据争论问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842304/

相关文章:

sql - 如何在 SQL Server 中使用唯一值填充空列?

python - ast.literal_eval 以某种方式抛出 UnicodeDecodeError

Python Pandas OneHotEncoder 类别

pandas - Matplotlib 轴上的浮点值而不是整数

python - 在 Dataframe.assign() 中使用 if/else 会导致 ValueError : The truth value of a Series

php - 合并两个包含对象的数组并删除重复值

python - 查找 numpy 元组数组中给定位置的唯一值

python - 创建一个使用两个 <input> 的自定义 Django 表单字段

python - 将 docker 容器内的 spark-submit 发送到 YARN 集群

python - 检查某个项目是否在列表中