GVKun编程网logo

如何在 Pandas Data Frame 中跨其他行的计算中创建新行?(pandas新建一个dataframe)

10

在本文中,我们将详细介绍如何在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 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 的索引。

稍微拆解一下:

  1. 赋值 df.loc[''Perc.''] = 将创建一个新行,其中填充了 = 右侧的值。
  2. df.loc[''>48h''] / df.loc[''<48h''] 以浮点数形式计算所需的比率
  3. .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上特定于组的计算

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:如何在其他列中添加具有出现次数的列

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实例用法

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的基本操作

pandas.DataFrame如何使用?总结pandas.DataFrame实例用法

简介:这篇文章主要给大家介绍了关于python中pandas.DataFrame排除特定行的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。

2. 关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码

pandas.DataFrame如何使用?总结pandas.DataFrame实例用法

简介:pandas是python环境下最有名的数据统计包,而DataFrame翻译为数据框,是一种数据组织方式,这篇文章主要给大家介绍了python中pandas.DataFrame对行与列求和及添加新行与列的方法,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。

3. python中pandas.DataFrame(创建、索引、增添与删除)的简单操作方法介绍

pandas.DataFrame如何使用?总结pandas.DataFrame实例用法

简介:这篇文章主要介绍了python中pandas.DataFrame的简单操作方法,其中包括创建、索引、增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

4. 详解python中pandas.DataFrame排除特定行方法示例代码

pandas.DataFrame如何使用?总结pandas.DataFrame实例用法

简介:这篇文章主要给大家介绍了关于python中pandas.DataFrame排除特定行的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。

【相关问答推荐】:

python - pymongo 取出来的 cursor 转 pandas 的 dataframe

python - pandas内存错误

以上就是pandas.DataFrame如何使用?总结pandas.DataFrame实例用法的详细内容,更多请关注php中文网其它相关文章!

pandas创建新Dataframe并添加多行的实例

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并添加多行的实例等相关内容,可以在本站寻找。

本文标签: