我目前对小型数据集的一些基本问题感到困惑。以下是说明数据格式的前三行:
“运动”,“条目”,“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 后遇到的问题:
某些分类值(例如 Prize_Pool)中存在逗号会导致 python 将这些条目视为字符串。我需要将它们转换为 float 才能进行某些计算。我已经使用 python 的 replace() 函数去除了逗号,但我目前仅能做到这一点。
类别 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/