GVKun编程网logo

Pandas:根据条件为多索引数据框的子集设置值的正确方法(多条件索引 excel)

26

关于Pandas:根据条件为多索引数据框的子集设置值的正确方法和多条件索引excel的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Groupbypandas数据框并根据条件保留所有行、P

关于Pandas:根据条件为多索引数据框的子集设置值的正确方法多条件索引 excel的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Groupby pandas 数据框并根据条件保留所有行、Pandas DataFrame:根据条件替换列中的所有值、Pandas-根据日期将数据框拆分为多个数据框?、pandas.DataFrame 根据条件新建列并赋值的方法等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Pandas:根据条件为多索引数据框的子集设置值的正确方法(多条件索引 excel)

Pandas:根据条件为多索引数据框的子集设置值的正确方法(多条件索引 excel)

我不确定如何在没有链接分配的情况下执行此操作(由于我要设置副本,因此这可能无法正常工作)。

我不想采用多索引熊猫数据框的子集,测试小于零的值并将其设置为零。

例如:

df = pd.DataFrame({(''A'',''a''): [-1,-1,0,10,12],                   (''A'',''b''): [0,1,2,3,-1],                   (''B'',''a''): [-20,-10,0,10,20],                   (''B'',''b''): [-200,-100,0,100,200]})df[df[''A'']<0] = 0.0

In [37]:dfOut[37]:    A   B    a   b   a   b0   -1  0   -20 -2001   -1  1   -10 -1002   0   2   0   03   10  3   10  1004   12  -1  20  200

这表明它无法根据条件进行设置。或者,如果我进行了链接分配:

df.loc[:,''A''][df[''A'']<0] = 0.0

这给出了相同的结果(以及带有复制警告的设置)

我可以根据第一级是我想要的条件来遍历每一列:

for one,two in df.columns.values:    if one == ''A'':        df.loc[df[(one,two)]<0, (one,two)] = 0.0

这给出了预期的结果:

In [64]:dfOut[64]:    A   B    a   b   a   b0   0   0   -20 -2001   0   1   -10 -1002   0   2   0   03   10  3   10  1004   12  0   20  200

但是以某种方式,我觉得有比遍历各列更好的方法。在熊猫中做到这一点的最佳方法是什么?

答案1

小编典典

这是的应用程序(也是使用MultiIndex Slicers的主要动机之一),请参见此处的文档

In [20]: df = pd.DataFrame({(''A'',''a''): [-1,-1,0,10,12],                   (''A'',''b''): [0,1,2,3,-1],                   (''B'',''a''): [-20,-10,0,10,20],                   (''B'',''b''): [-200,-100,0,100,200]})In [21]: dfOut[21]:     A      B         a  b   a    b0  -1  0 -20 -2001  -1  1 -10 -1002   0  2   0    03  10  3  10  1004  12 -1  20  200In [22]: idx = pd.IndexSliceIn [23]: mask = df.loc[:,idx[''A'',:]]<0In [24]: maskOut[24]:        A              a      b0   True  False1   True  False2  False  False3  False  False4  False   TrueIn [25]: df[mask] = 0In [26]: dfOut[26]:     A      B         a  b   a    b0   0  0 -20 -2001   0  1 -10 -1002   0  2   0    03  10  3  10  1004  12  0  20  200

由于您使用的是列索引的第一级,因此以下内容也将适用。上面的示例更为笼统,说您想对“ a”执行此操作。

In [30]: df[df[[''A'']]<0] = 0In [31]: dfOut[31]:     A      B         a  b   a    b0   0  0 -20 -2001   0  1 -10 -1002   0  2   0    03  10  3  10  1004  12  0  20  200

Groupby pandas 数据框并根据条件保留所有行

Groupby pandas 数据框并根据条件保留所有行

如何解决Groupby pandas 数据框并根据条件保留所有行?

我有一个熊猫数据框,如下所示:

import pandas as pd
df = pd.DataFrame({''col1'':[''abc'',''abc'',''xyz'',''cd''],''col2'':[''2020-02-01'',''2020-02-01'',''2020-01-01'',''2020-05-01'',''2020-06-01'']})
df


    col1    col2
0   abc    2020-02-01
1   abc    2020-02-01
2   abc    2020-01-01
3   xyz    2020-01-01
4   xyz    2020-05-01
5   cd     2020-06-01

我想要基于 col1 的 yo groupby 并保留 col2 最大值的所有行

我的预期结果:

    col1    col2
0   abc    2020-02-01
1   abc    2020-02-01
4   xyz    2020-05-01
5   cd     2020-06-01

我尝试了下面的代码,但它只给了我最大值为 col2 的行

df.sort_values(''col2'').groupby([''col1'']).tail(1)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Pandas DataFrame:根据条件替换列中的所有值

Pandas DataFrame:根据条件替换列中的所有值

我有一个简单的 DataFrame,如下所示:

pandas数据框

我想从“第一季”列中选择所有值,并将超过 1990 年的值替换为 1。在此示例中,只有巴尔的摩乌鸦队将 1996 年替换为 1(保持其余数据不变)。

我使用了以下内容:

df.loc[(df['First Season'] > 1990)] = 1

但是,它将该行中的所有值替换为 1,而不仅仅是“第一季”列中的值。

如何仅替换该列中的值?

Pandas-根据日期将数据框拆分为多个数据框?

Pandas-根据日期将数据框拆分为多个数据框?

我有一个带有多个列以及一个日期列的数据框。日期格式为15年12月31日,我将其设置为日期时间对象。

我将datetime列设置为索引,并希望对数据框的每个月执行回归计算。

我相信实现此目的的方法是将数据框基于月份拆分为多个数据框,存储到数据框列表中,然后对列表中的每个数据框执行回归。

我使用过groupby可以按月成功拆分数据框,但是不确定如何正确地将groupby对象中的每个组转换为数据框,以便能够在其上运行回归函数。

有谁知道如何根据日期将一个数据框拆分为多个数据框,或者更好地解决我的问题?

这是我到目前为止编写的代码

import pandas as pd
import numpy as np
import statsmodels.api as sm
from patsy import dmatrices

df = pd.read_csv('data.csv')
df['date'] = pd.to_datetime(df['date'],format='%Y%m%d')
df = df.set_index('date')

# Group dataframe on index by month and year 
# Groupby works,but dmatrices does not 
for df_group in df.groupby(pd.TimeGrouper("M")):
    y,X = dmatrices('value1 ~ value2 + value3',data=df_group,return_type='dataframe')

pandas.DataFrame 根据条件新建列并赋值的方法

pandas.DataFrame 根据条件新建列并赋值的方法

下面为大家分享一篇pandas.dataframe 根据条件新建列并赋值的方法,有着一定的参考价值,希望对大家有所帮助

实例如下所示:

import numpy as np
import pandas as pd

data = {&#39;city&#39;: [&#39;Beijing&#39;, &#39;Shanghai&#39;, &#39;Guangzhou&#39;, &#39;Shenzhen&#39;, &#39;Hangzhou&#39;, &#39;Chongqing&#39;],
    &#39;year&#39;: [2016,2016,2015,2017,2016, 2016],
    &#39;population&#39;: [2100, 2300, 1000, 700, 500, 500]}
frame = pd.DataFrame(data, columns = [&#39;year&#39;, &#39;city&#39;, &#39;population&#39;, &#39;debt&#39;])

# 使用apply函数, 如果city字段包含&#39;ing&#39;关键词,则&#39;判断&#39;这一列赋值为1,否则为0
frame[&#39;panduan&#39;] = frame.city.apply(lambda x: 1 if &#39;ing&#39; in x else 0)
print(frame)
登录后复制

相关推荐:

Python数据分析库pandas基本操作方法_python

python解决pandas处理缺失值为空字符串的问题_python

以上就是pandas.DataFrame 根据条件新建列并赋值的方法的详细内容,更多请关注php中文网其它相关文章!

关于Pandas:根据条件为多索引数据框的子集设置值的正确方法多条件索引 excel的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Groupby pandas 数据框并根据条件保留所有行、Pandas DataFrame:根据条件替换列中的所有值、Pandas-根据日期将数据框拆分为多个数据框?、pandas.DataFrame 根据条件新建列并赋值的方法的相关知识,请在本站寻找。

本文标签: