【问题标题】:Pandas: Convert some rows / columns from Floats to IntegersPandas:将一些行/列从浮点数转换为整数
【发布时间】: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


【解决方案1】:

Pandas 列包含同质类型。您可以将其转换为 object 类型以存储 python 对象(因此是混合类型)。 This 帖子可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 2023-04-08
    • 2016-01-29
    • 2014-02-13
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多