GVKun编程网logo

在Python Dataframe中汇总行(python统计dataframe行数)

114

此处将为大家介绍关于在PythonDataframe中汇总行的详细内容,并且为您解答有关python统计dataframe行数的相关问题,此外,我们还将为您介绍关于pandas.fillna()未在P

此处将为大家介绍关于在Python Dataframe中汇总行的详细内容,并且为您解答有关python统计dataframe行数的相关问题,此外,我们还将为您介绍关于pandas.fillna()未在Python 3中填充DataFrame中的值、python DataFrame中的排列、Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)、python – 从另一个Dataframe创建Dataframe的有用信息。

本文目录一览:

在Python Dataframe中汇总行(python统计dataframe行数)

在Python Dataframe中汇总行(python统计dataframe行数)

我刚刚开始学习Python,因此如果这个问题在其他地方已经得到解答,请原谅我。我想创建一个名为“ Sum”的新列,该列将简单地添加到前面的列中。

Risk_Parity.tail()

    VCIT  VCLT  PCY     RWR     IJR     XLU     EWL
Date                            
2017-01-31  21.704155   11.733716   9.588649    8.278629    5.061788    7.010918    7.951747
2017-02-28  19.839319   10.748690   9.582891    7.548530    5.066478    7.453951    7.950232
2017-03-31  19.986782   10.754507   9.593623    7.370828    5.024079    7.402774    7.654366
2017-04-30  18.897307   11.102380   10.021139   9.666693    5.901137    7.398604    11.284331
2017-05-31  63.962659   23.670240   46.018698   9.917160    15.234977   12.344524   20.405587

表格中的列有些偏离,但是我所需要的只是(21.70 + 11.73 … + 7.95)我只能创建该列Risk_Parity['sum'] =,但是我迷路了。

我宁愿不必做 Risk_Parity['sum] = Risk_Parity['VCIT'] + Risk_Parity['VCLT']...

创建sum列后,我想将每一列除以sum列,然后将其放入一个新的数据框,该数据框将不包括sum列。

如果有人可以提供帮助,我将不胜感激。请尽量使您的答案变笨。

谢谢!

汤姆

pandas.fillna()未在Python 3中填充DataFrame中的值

pandas.fillna()未在Python 3中填充DataFrame中的值

我在Python 3中运行Pandas,发现以下内容:

import pandas as pdimport numpy as npfrom pandas import DataFramefrom numpy import nandf = DataFrame([[1, nan], [nan, 4], [5, 6]])print(df)df2 = dfdf2.fillna(0)print(df2)

返回以下内容:

 0   10   1 NaN1 NaN   42   5   6    0   10   1 NaN1 NaN   42   5   6

而以下:

import pandas as pdimport numpy as npfrom pandas import Seriesfrom numpy import nansr1 = Series([1,2,3,nan,5,6,7])sr1.fillna(0)

返回以下内容:

0    11    22    33    04    55    66    7dtype: float64

因此,当我使用.fillna()时,它填充的是Series值,而不是0的DataFrame值。这是Python
3的问题吗?否则,我在这里缺少什么来代替DataFrames中的空值以获得0?谢谢!

答案1

小编典典

它与调用fillna()函数的方式有关。

如果这样做inplace=True(请参见下面的代码),它们将被填充到位并覆盖原始数据框。

In [1]: pasteimport pandas as pdimport numpy as npfrom pandas import DataFramefrom numpy import nandf = DataFrame([[1, nan], [nan, 4], [5, 6]])## -- End pasted text --In [2]:In [2]: dfOut[2]:     0   10   1 NaN1 NaN   42   5   6In [3]: df.fillna(0)Out[3]:    0  10  1  01  0  42  5  6In [4]: df2 = dfIn [5]: df2.fillna(0)Out[5]:    0  10  1  01  0  42  5  6In [6]: df2  # note how this is unchanged.Out[6]:     0   10   1 NaN1 NaN   42   5   6In [7]: df.fillna(0, inplace=True)  # this will replace the values.In [8]: dfOut[8]:    0  10  1  01  0  42  5  6In [9]:

python DataFrame中的排列

python DataFrame中的排列

有 20 个符号,您将获得 20 个!排列大约是 2.4E18。你永远不会有足够的内存来保存这么多排列。假设每个字符 1 个字节,则需要 48 艾字节的存储空间。

Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)

Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)

import pandas as pd


dict=[[1,2,3,4,5,6],[2,6,7],[3,7,8],[4,8,9],[5,9,10]]
data=pd.DataFrame(dict)
print(data)
for indexs in data.index:
    print(data.loc[indexs].values,data.loc[indexs].values[0],data.loc[indexs].values[1])

python – 从另一个Dataframe创建Dataframe

python – 从另一个Dataframe创建Dataframe

我有一个如下所示的数据框

Index  Batch    Name
    0        1      Jon
    1    
    2        2      Adam
    3         
    4        3      Voges
    5       
    6        4      Jon

我想从这个数据框中创建另一个数据帧,并将批次编号分组

Batch   Name/Batches
1        Jon(1,4)
2        Adam(2)
3        Voges(3)
4        Jon(1,4)

我怎么能这样做,如果我从现有DF创建一个新列表或ordereddict然后将其转换为另一个DF,或者这可以在运行中完成.

更新:
 在他们之间编辑Spaces

解决方法

这是使用groupby变换和自定义函数的一种方法:

def stringer(x):
    return '('+','.join(map(str,x))+')'

df['Name'] += df.groupby('Name')['Batch'].transform(stringer)

print(df)

   Batch       Name
0      1  Jon(1,4)
1      2    Adam(2)
2      3   Voges(3)
3      4  Jon(1,4)

更新空行的记帐

在这种情况下你可以使用numpy.where:

import numpy as np

def stringer(x):
    return '('+',map(int,x)))+')'

s = df.dropna(subset=['Name']).groupby('Name')['Batch'].apply(stringer)

df['Name/Batch'] = np.where(df['Name'].notnull(),df['Name'] + df['Name'].map(s),df['Name'])

print(df)

   Index  Batch   Name Name/Batch
0      0    1.0    Jon  Jon(1,4)
1      1    NaN    NaN        NaN
2      2    2.0   Adam    Adam(2)
3      3    NaN    NaN        NaN
4      4    3.0  Voges   Voges(3)
5      5    NaN    NaN        NaN
6      6    4.0    Jon  Jon(1,4)

关于在Python Dataframe中汇总行python统计dataframe行数的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于pandas.fillna()未在Python 3中填充DataFrame中的值、python DataFrame中的排列、Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)、python – 从另一个Dataframe创建Dataframe的相关知识,请在本站寻找。

本文标签: