此处将为大家介绍关于在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行数)
- pandas.fillna()未在Python 3中填充DataFrame中的值
- python DataFrame中的排列
- Python pandas中DataFrame逐行读取的方法(pandas.core.frame.DataFrame类型)
- python – 从另一个Dataframe创建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中的值
我在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中的排列
有 20 个符号,您将获得 20 个!排列大约是 2.4E18。你永远不会有足够的内存来保存这么多排列。假设每个字符 1 个字节,则需要 48 艾字节的存储空间。
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
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
解决方法
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的相关知识,请在本站寻找。
本文标签: