首页 > 解决方案 > Pandas中Dataframe的递增列

问题描述

我正在尝试合并多个 Pandas 数据框以从中创建聚合数据框。我想要做的一部分是计算有多少原始数据帧具有给定行的数据。我需要这些行有 0 而不是 NaN,但知道如果“完成”列包含 0,那么这里最初没有数据。

这是我尝试过的:

daytona_stats = pd.merge(entry_list, track1_cut, 
                         on='Driver', how='left').fillna(0)
print(entry_list.head())
print(track1_cut.head())
print(daytona_stats.head())

if daytona_stats['Finish'] > 0:
    daytona_stats['races'] += 1

这返回

            Driver         ...          avg_quality_passes
0        Joey Gase         ...                         0.0
1   Jamie McMurray         ...                         0.0
2  Brad Keselowski         ...                         0.0
3    Austin Dillon         ...                         0.0
4    Kevin Harvick         ...                         0.0

[5 rows x 6 columns]
           Driver  Finish       ...        Pct. Top 15 Laps  Quality Passes
0   Austin Dillon       1       ...                    40.6              67
1   Bubba Wallace       2       ...                    78.3             161
2    Denny Hamlin       3       ...                    66.7             101
3     Joey Logano       4       ...                    74.9             133
4  Chris Buescher       5       ...                    40.1              52

[5 rows x 5 columns]
            Driver  races       ...        Pct. Top 15 Laps  Quality Passes
0        Joey Gase    0.0       ...                     0.0             0.0
1   Jamie McMurray    0.0       ...                     0.0             2.0
2  Brad Keselowski    0.0       ...                    39.6           133.0
3    Austin Dillon    0.0       ...                    40.6            67.0
4    Kevin Harvick    0.0       ...                    44.0           171.0

[5 rows x 10 columns]
Traceback (most recent call last):
  File "C:\EclipseWorkspaces\csse120\Personal\Personal_Projects\Daytona_Projections.py", line 48, in <module>
    if daytona_stats['Finish'] > 0:
  File "C:\Users\burusj\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\core\generic.py", line 1573, in __nonzero__
    .format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

标签: pythonpandas

解决方案


我认为这可以工作:

daytona_stats.loc[daytona_stats['Finish'] > 0,'races'] += 1

代替:

if daytona_stats['Finish'] > 0:
    daytona_stats['races'] += 1

您可以在pandas 有关索引的教程中阅读更多为什么它可以工作。


推荐阅读