【发布时间】:2021-04-27 00:56:54
【问题描述】:
我正在使用 pandas 整理一些实时体育数据并对运动员进行排名。但是,当我做团队站立时,由于某种原因,第二个团队的统计数据都被转换为浮点数,即使在数据源中它们也是整数。
如何将这些浮点数转换回整数。请记住,某些行实际上应该是浮点数(例如表示百分比的准确度。)
这是我目前所拥有的:
import pandas as pd
teams_df = pd.read_excel("GAME_STATS.xlsm", skiprows=8, nrows=12, usecols=[0,1,2])
teams_df.to_csv("team_stats.csv")
这会写入 CSV,结果是:
+----------------------------------------------------------+
| | Unnamed: 0 | VS. | Unnamed: 2 |
+----------------------------------------------------------+
| 0 | 342 | Disposals | 339.0 |
| 1 | 232 | Kicks | 214.0 |
| 2 | 110 | Handballs | 125.0 |
| 3 | 23 | Hit Outs | 45.0 |
| 4 | 27 | Frees | 25.0 |
| 5 | S.A. | | |
| 6 | | VS | |
| 7 | 23 | Scoring Shots | 18.0 |
| 8 | 0.5652 | Accuracy | 0.5 |
| 9 | 26.3 | Disposal Per Goal | 37.7 |
| 10 | 14.9 | Disposal Per Scoring Shot | 18.8 |
| 11 | 44 | Inside 50s | 43.0 |
+----------------------------------------------------------+
您可以在左侧的团队中看到:第 1-5 行以及第 8 和 12 行都应该是整数。由于某种原因,Pandas 将它们作为浮点数返回。有没有办法可以将这些特定的列/行转换回整数或首先阻止这种情况发生?
我尝试过使用 .astype(int) 函数,但只会出错。
当以 dict 打印时,输出如下:
print(teams_df.to_dict())
{'Unnamed: 0': {0: 342, 1: 232, 2: 110, 3: 23, 4: 27, 5: 'S.A.', 6: nan, 7: 23, 8: 0.5652, 9: 26.3, 10: 14.9, 11: 44}, 'VS': {0: 'Disposals', 1: 'Kicks', 2: 'Handballs', 3: 'Hit Outs', 4: 'Frees', 5: nan, 6: 'VS', 7: 'Scoring Shots', 8: 'Accuracy', 9: 'Disposal Per Goal', 10: 'Disposal Per Scoring Shot', 11: 'Inside 50s'}, 'Unnamed: 2': {0: 339.0, 1: 214.0, 2: 125.0, 3: 45.0, 4: 25.0, 5: nan, 6: nan, 7: 18.0, 8: 0.5, 9: 37.7, 10: 18.8, 11: 43.0}}
【问题讨论】:
-
将您的数据框发布为代码友好的 sn-p 将使这个和未来的问题更容易回答。而不是
team_df.to_csv(...)使用print(team_df.to_dict())并将输出包含在您的问题中。 -
@HenryEcker 我已经进行了相应的编辑,谢谢。
标签: python pandas row transform