jjzjj

DataFrame

全部标签

python - 测试 pandas DataFrame 的任何列是否满足条件

我有一个包含很多列的DataFrame。现在,我有一个条件可以测试其中的某些列,如果该列集中的任何一个不为零。有没有更优雅的方法将该条件应用于列的子集?我当前的代码是:df['indicator']=((df['col_1']!=0)|(df['col_2']!=0)|(df['col_3']!=0)|(df['col_4']!=0)|(df['col_5']!=0))我一直在寻找类似这样的伪代码:columns=['col_1','col_1','col_2','col_3','col_4','col_5']df['indicator']=df.any(columns,lambdav

python - 如何绘制按日期 pandas 数据框聚合的图表

我有这个数据框df=pd.DataFrame([["2017-01-14",1],["2017-01-14",30],["2017-01-16",216],["2017-02-17",23],["2017-02-17",2],["2017-03-19",745],["2017-03-19",32],["2017-03-20",11],["2017-03-20",222],["2017-03-21",4]],columns=["date","payout_value"])要按我使用的日期汇总payout_value:df_daily=df.groupby('date').agg(['su

python - 如何有效地迭代 pandas DataFrame 并在这些值上递增 NumPy 数组?

我的pandas/numpy生疏了,感觉自己写的代码效率低下。我正在Python3.x中初始化一个numpy零数组,长度为1000。为了我的目的,这些只是整数:importnumpyasnparray_of_zeros=np.zeros((1000,),)我还有下面的DataFrame(比我的实际数据小很多)importpandasaspddict1={'start':[100,200,300],'end':[400,500,600]}df=pd.DataFrame(dict1)print(df)####startend##0100400##1200500##2300600DataFr

python - Pandas Dataframe 检查列值是否在列列表中

我有一个数据框df:data={'id':[12,112],'idlist':[[1,5,7,12,112],[5,7,12,111,113]]}df=pd.DataFrame.from_dict(data)看起来像这样:ididlist012[1,5,7,12,112]1112[5,7,12,111,113]我需要检查id是否在idlist中,然后选择或标记它。我尝试了以下变体并收到注释错误:df=df.loc[df.id.isin(df.idlist),:]#TypeError:unhashabletype:'list'df['flag']=df.where(df.idlist.i

python - Pandas DataFrame.groupby() 到具有多列值的字典

type(Table)pandas.core.frame.DataFrameTable=====================Column1Column2Column302311521231195256122223243145459154415125873对于任何熟悉pandas的人,我将如何使用.groupby()方法构建一个多值字典?我希望输出类似于这种格式:{0:[(23,1)]1:[(5,2),(2,3),(19,5)]#etc...}其中Col1值表示为键,相应的Col2和Col3是为每个Col1键。我的语法只适用于将一列汇集到.groupby()中:Table.group

python - 基于内部连接连接字符串

我有两个包含相同列的DataFrame;一个id,一个date和一个str:df1=pd.DataFrame({'id':['1','2','3','4','10'],'date':['4','5','6','7','8'],'str':['a','b','c','d','e']})df2=pd.DataFrame({'id':['1','2','3','4','12'],'date':['4','5','6','7','8'],'str':['A','B','C','D','Q']})我想在id和date列上加入这两个数据集,并创建一个结果列,它是str的串联:df3=pd.Data

python - 在 Python 3.x 中使用 Pandas 合并基于列和特定列的值的两个 DataFrame

你好,我有一个问题,我无法实现解决方案。我有以下两个数据框:>>>df1ABdate1101-20162102-20171203-20172204-2020>>>df2AB01-201602-201703-201704.2020110.100.220.550.77210.200.120.990.125120.130.150.150.245220.330.10.8880.64我想要的是跟随DataFrame:>>>df3ABdatevalue1101-20160.102102-20170.121203-20170.152204-20200.64我已经尝试过以下:summarize_dat

python - Pandas 数据框 : how to aggregate a subset of rows based on value of a column

我有一个结构如下的Pandas数据框:valuelabA50B35C8D5E1F1这只是一个例子,实际数据帧更大,但遵循相同的结构。示例数据框是用这两行创建的:df=pd.DataFrame({'lab':['A','B','C','D','E','F'],'value':[50,35,8,5,1,1]})df=df.set_index('lab')我想聚合值小于给定阈值的行:所有这些行都应替换为单个行,该行的值是替换行的总和。例如,如果我选择一个阈值=6,那么预期的结果应该是这样的:valuelabA50B35C8X7#sumofD,E,F我该怎么做?我想用groupby(),但我看

python - 将 uuid 添加到 pandas DataFrame 中的新列

我想为pandasDataFrame中单个新列中的每一行添加一个uuid。这显然用相同的uuid填充了列:importuuidimportpandasaspdimportnumpyasnpdf=pd.DataFrame(np.random.randn(4,3),columns=list('abc'),index=['apple','banana','cherry','date'])df['uuid']=uuid.uuid4()print(df)abcuuidapple0.687601-1.332904-0.16601834115445-c4b8-4e64-bc96-e120abda16

python - 如何根据条件为 Pandas 数据框中的行组分配唯一值?

我的数据框是这样的:importpandasaspdexample=[{'A':3},{'A':5},{'A':0},{'A':2},{'A':6},{'A':9},{'A':0},{'A':3},{'A':4}]df=pd.DataFrame(example)print(df)输出:df350269034一个新的“簇”出现在df中出现0之后。我想给这些集群中的每一个一个唯一的值,就像这样:df3A5A0-2B6B9B0-3C4C我尝试过使用enumerate和itertools,但由于我是Python的新手,所以我一直在努力了解这些选项的正确用法和语法。