在本文中,我们将详细介绍如何在PandasDataFrame中跨其他行的计算中创建新行?的各个方面,并为您提供关于pandas新建一个dataframe的相关解答,同时,我们也将为您带来关于Panda
在本文中,我们将详细介绍如何在 Pandas Data Frame 中跨其他行的计算中创建新行?的各个方面,并为您提供关于pandas新建一个dataframe的相关解答,同时,我们也将为您带来关于Pandas DataFrame上特定于组的计算、Pandas Dataframe:如何在其他列中添加具有出现次数的列、pandas.DataFrame如何使用?总结pandas.DataFrame实例用法、pandas创建新Dataframe并添加多行的实例的有用知识。
本文目录一览:- 如何在 Pandas Data Frame 中跨其他行的计算中创建新行?(pandas新建一个dataframe)
- Pandas DataFrame上特定于组的计算
- Pandas Dataframe:如何在其他列中添加具有出现次数的列
- pandas.DataFrame如何使用?总结pandas.DataFrame实例用法
- pandas创建新Dataframe并添加多行的实例
如何在 Pandas Data Frame 中跨其他行的计算中创建新行?(pandas新建一个dataframe)
如何解决如何在 Pandas Data Frame 中跨其他行的计算中创建新行??
我想通过行计算创建一个新行。 我的 DataFrame 看起来像这样:
Para 01.21 02.21 03.21
<48h 22 25 38
>48h 0 1 3
我想计算每一行的百分比,以便:
目标
Para 01.21 02.21 03.21
<48h 22 25 38
>48h 0 1 3
Perc. 0% 4% 8%
我有一些关于附加新 DataFrame 的想法,但都没有真正成功。 感谢您的帮助!
解决方法
假设您很乐意就地修改输入 DataFrame,这将产生您所要求的确切输出:
df.loc[''Perc.''] = (
df.loc[''>48h''] / df.loc[''<48h'']
).apply(lambda x: f"{x:.0%}")
这假设打印输出中的第一列是 DataFrame 的索引。
稍微拆解一下:
- 赋值
df.loc[''Perc.''] =
将创建一个新行,其中填充了=
右侧的值。 -
df.loc[''>48h''] / df.loc[''<48h'']
以浮点数形式计算所需的比率 -
.apply
调用对新行的每个元素调用一个函数,以将原始百分比数字转换为以您请求的方式格式化的字符串。进一步解开这个:-
f"{x}"
将x
转换为字符串(本质上等同于str(x)
) -
f"{x:.0%}"
通过添加.0%
格式说明符 增强了上述功能,该说明符会将值显示为带有 0 个小数位的百分比(即乘以 100,四舍五入到 0小数位,然后添加%
符号)。还有各种其他格式说明符可用于浮点数据。
-
请注意,如果您想对结果值进行任何进一步处理,我建议不要执行第 3 步 - 一旦您将数据转换为字符串,它显然不能是例如乘以其他数据。
如果您想要两全其美,将内部值保持为浮动比率,但将它们显示为百分比,您可以这样做:
df.loc[''Perc.''] = (
df.loc[''>48h''] / df.loc[''<48h'']
)
display_str = df.T.to_string(formatters={"Perc.": lambda x: f"{x:.0%}"})
print(display_str)
这将修改 df
以添加 Perc.
行,但其值将保持为实际浮动比率。然后 display_str
将是整个数据帧的格式适当的字符串表示形式,包括百分比。
请注意,formatters
接受以列名称为键的字典,而不是行,因此您必须先转置数据 (df.T
),结果输出将被转置:
Para <48h >48h Perc.
0 1.21 22.0 0.0 0%
1 2.21 25.0 1.0 4%
2 3.21 38.0 3.0 8%
如果您在 Jupyter notebook 中工作,您还可以使用 df.style.format
方法来实现类似的功能;打电话
df.T.style.format({"Perc.": "{:.0%}"})
将返回一个 pandas.io.formats.style.Styler
对象,但如果您在 Jupyter notebook 中,它将像 DataFrame 一样呈现,相关列的格式如上所示。但同样,这仅适用于逐列,因此您需要转置。
对选择的行使用 DataFrame.loc
:
#If first column is not index create it
#df = df.set_index(''Para'')
df.loc[''Perc''] = df.loc[''>48h''].div(df.loc[''<48h'']).mul(100).round()
print (df)
01.21 02.21 03.21
Para
<48h 22.0 25.0 38.0
>48h 0.0 1.0 3.0
Perc 0.0 4.0 8.0
最好先转置,因此可以按列选择:
#If first column is not index create it
#df = df.set_index(''Para'')
df = df.T
df[''Perc''] = df[''>48h''].div(df[''<48h'']).mul(100).round()
print (df)
Para <48h >48h Perc
01.21 22 0 0.0
02.21 25 1 4.0
03.21 38 3 8.0
,
para = [''01.21'',''02.21'',''03.21'']
a = np.array(([22,25,38]))
b = np.array(([0,1,3]))
df = pd.DataFrame([para,a,b],index=[''Para'',''<48h'',''>48h''],columns=[''col0'',''col1'',''col2''])
perc = np.array(((b/a)*100))
df2 = pd.DataFrame([perc],index=[''Perc.''],''col2''])
df = df.append(df2)
print(df)
输出:
col0 col1 col2
Para 01.21 02.21 03.21
<48h 22 25 38
>48h 0 1 3
Perc. 0 4 7.89474
,
像这样存储数据不是最佳做法,请阅读 Hadley 的 tidy data paper。
但在一行中,您可以这样做。
df.loc[''perc''] = df.iloc[2]/df.iloc[1]
,
df.loc[key] = 行
这就是我们在 Pandas 数据框中创建新行的方式
Pandas DataFrame上特定于组的计算
您可以从价格中减去均值分组,以创建一个名为Price_Diff_Mean
的新列。使用.transform('mean')
为列price
创建一系列长度相同的值,并从price
中减去这些值:
df['Price_Diff_Mean'] = df['price'] - df.groupby('brand')['price'].transform('mean')
df
Out[6]:
product brand price Price_Diff_Mean
0 macbook Apple 1000 -200
1 macbook air Apple 1200 0
2 macbook pro Apple 1400 200
3 thinkbook Lenovo 600 -100
4 thinkpad Lenovo 800 100
或者,您可以在.assign
中添加一列,这将为您提供相同的结果:
df = df.assign(Price_Diff_Mean = df['price'] - df.groupby('brand')['price'].transform('mean'))
,
在我看来,这是一种更为优雅的方式:
df['newcolumn'] = df.groupby('brand').transform(lambda x: x - x.mean())
Pandas Dataframe:如何在其他列中添加具有出现次数的列
我必须遵循df:
Col1 Col2
test Something
test2 Something
test3 Something
test Something
test2 Something
test5 Something
我想得到
Col1 Col2 Occur
test Something 2
test2 Something 2
test3 Something 1
test Something 2
test2 Something 2
test5 Something 1
我尝试使用:
df["Occur"] = df["Col1"].value_counts()
但这没有帮助。我的“发生”列充满了“ NaN”
pandas.DataFrame如何使用?总结pandas.DataFrame实例用法
这篇文章主要给大家介绍了关于python中pandas.dataframe排除特定行的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。前言大家在使用python进行数据分析时,经常要使用到的一个数据结构就是pandas的dataframe,关于python中pandas.dataframe的基本操作,大家可以查看这篇文章。pandas.dataframe排除特定行如果我们想要像excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入,还可以传入字典,指定列进行筛选。但是如果我们只想要所有内容中不包含特定行的内容,却并没有一个isnotin()方法。我今天的工作就遇到了这样的需求,经常查找之后,发现只能换种方式使用isin()来实现这个需求。示例如下:in [3]: df&
1. 关于python中pandas.DataFrame的基本操作
简介:这篇文章主要给大家介绍了关于python中pandas.DataFrame排除特定行的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。
2. 关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码
简介:pandas是python环境下最有名的数据统计包,而DataFrame翻译为数据框,是一种数据组织方式,这篇文章主要给大家介绍了python中pandas.DataFrame对行与列求和及添加新行与列的方法,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
3. python中pandas.DataFrame(创建、索引、增添与删除)的简单操作方法介绍
简介:这篇文章主要介绍了python中pandas.DataFrame的简单操作方法,其中包括创建、索引、增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
4. 详解python中pandas.DataFrame排除特定行方法示例代码
简介:这篇文章主要给大家介绍了关于python中pandas.DataFrame排除特定行的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。
【相关问答推荐】:
python - pymongo 取出来的 cursor 转 pandas 的 dataframe
python - pandas内存错误
以上就是pandas.DataFrame如何使用?总结pandas.DataFrame实例用法的详细内容,更多请关注php中文网其它相关文章!
pandas创建新Dataframe并添加多行的实例
处理数据的时候,偶然遇到要把一个Dataframe中的某些行添加至一个空白的Dataframe中的问题。
最先想到的方法是创建Dataframe,从原有的Dataframe中逐行筛选出指定的行(类型为pandas的Series),并使用append方法进行添加。这种方法速度很慢,而且添加之后总会出现奇怪的问题,数据类型也不对。
较快的方法为,首先创建空的list,对原有的Dataframe进行逐行筛选,筛选出的行转化为dict类型,append进list中。全部添加完毕后,再将整个list转化为Dataframe格式。
代码如下:
a = [] for line in insert_lines: line = dict(line) a.append(line) a = pandas.Dataframe(a)
以上这篇pandas创建新Dataframe并添加多行的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。
您可能感兴趣的文章:
- 对pandas的dataframe绘图并保存的实现方法
- 对Python中DataFrame按照行遍历的方法
- python之pandas用法大全
- Python遍历pandas数据方法总结
关于如何在 Pandas Data Frame 中跨其他行的计算中创建新行?和pandas新建一个dataframe的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Pandas DataFrame上特定于组的计算、Pandas Dataframe:如何在其他列中添加具有出现次数的列、pandas.DataFrame如何使用?总结pandas.DataFrame实例用法、pandas创建新Dataframe并添加多行的实例等相关内容,可以在本站寻找。
本文标签: