Sim*_*mon 5 python sum dataframe pandas
通过阅读 pandas 文档以及一个很好的问题和答案(pandas 中的 axis 意味着什么?),我预计 axis=0 始终意味着相对于列。当我使用 sum() 时,这对我有用,但当我使用 dropna() 调用时,这对我有用。
当我有这样的数据框时:
raw_data = {'column1': [42,13, np.nan, np.nan],
'column2': [4,12, np.nan, np.nan],
'column3': [25,61, np.nan, np.nan]}
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
column1 column2 column3
0 42.0 4.0 25.0
1 13.0 12.0 61.0
2 NaN NaN NaN
3 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
我可以打印各列的总和,其中 axis=0。和这个:
df = pd.DataFrame(raw_data )
print(df.sum(axis=0))
Run Code Online (Sandbox Code Playgroud)
给出输出:
column1 55.0
column2 16.0
column3 86.0
Run Code Online (Sandbox Code Playgroud)
当我尝试从 axis=0 的数据框中删除值时,这应该再次与 columns* 相关。但是当我这样做时:
dfclear=df.dropna(axis=0,how='all')
print(dfclear)
Run Code Online (Sandbox Code Playgroud)
我得到输出:
column1 column2 column3
0 42.0 4.0 25.0
1 13.0 12.0 61.0
Run Code Online (Sandbox Code Playgroud)
我期望得到以下结果(我在 axis=1 时得到):
column1 column2 column3
0 42.0 4.0 25.0
1 13.0 12.0 61.0
2 NaN NaN NaN
3 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
所以在我看来,轴在 sum() 和 dropna() 之间的行为不同
我在这里缺少什么吗?
* https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.DataFrame.dropna.html
小智 0
我认为答案是正确的:
print(df)
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
column1 column2 column3
0 42.0 4.0 25.0
1 13.0 12.0 61.0
2 NaN NaN NaN
3 NaN NaN NaN
dfclear=df.dropna(axis=0,how='all')
print(dfclear)
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
column1 column2 column3
0 42.0 4.0 25.0
1 13.0 12.0 61.0
Run Code Online (Sandbox Code Playgroud)
来自 Pandas 文档示例解释:
删除所有元素均为 nan 的行(没有要删除的行,因此 df 保持不变)
归档时间: |
|
查看次数: |
1389 次 |
最近记录: |