草庐IT

python - 有条件的列上的 Pandas 累积总和

我没有在别处找到答案,所以我需要问一下。可能是因为我不知道如何正确命名它。(英语不是我的母语)我有大型日期时间数据框。时间在这里很重要。df中的一列具有值[Nan,1,-1]。我需要执行快速计算以在值发生变化时重置累计和。例子。Timesigndesire_value2014-01-2405:00:00NanNan2014-01-2406:00:00NanNan2014-01-2407:00:00NanNan2014-01-2408:00:00112014-01-2409:00:00122014-01-2410:00:00132014-01-2411:00:00-112014-01-2

python - 在具有数值的列上的 pandas 数据框中逐行应用函数

我有以下数据框:importpandasaspddf=pd.DataFrame({'AAA':['w','x','y','z'],'BBB':[10,20,30,40],'CCC':[100,50,-30,-50]})看起来像这样:In[32]:dfOut[32]:AAABBBCCC0w101001x20502y30-303z40-50我想做的是对每一行的每一列执行函数操作,除了具有非数值的那些(在本例中为AAA)。在真实情况下,非数字的情况总是在第一列,其余的(可能大于2列)总是数字的。最终期望的输出是:AAABBBCCCScore0w101001101x2050702y30-300

python - Django - 限制 unique_together 列上的键大小

使用MySQL,我试图创建一个包含多个字段的复合键的表。问题是一些字段很大(255-1024长度),如果我尝试运行迁移,我将得到:django.db.utils.OperationalError:(1071,'Specifiedkeywastoolong;maxkeylengthis767bytes')而不是增加数据库的键长度(或更改其他一些数据库/表设置),我发现我可以限制用作迁移文件中键的字段的值,以便它保持在最大键内长度,像这样:ALTERTABLEADDUNIQUEKEY`_composite_key`(`col1`,`col2`(75),`col3`,`col4`,`col5

python - Pandas 在不手动指定级别的情况下在多索引列上融化 (Python 3.5.1)

我有一个看起来像这样的PandasDataFrame:df=pd.DataFrame({'col1':{0:'a',1:'b',2:'c'},'col2':{0:1,1:3,2:5},'col3':{0:2,1:4,2:6},'col4':{0:3,1:6,2:2},'col5':{0:7,1:2,2:3},'col6':{0:2,1:9,2:5},})df.columns=[list('AAAAAA'),list('BBCCDD'),list('EFGHIJ')]ABCDEFGHIJ0a123721b346292c56235我基本上只想melt数据框,以便每个列级别成为一个新列。换句

python - sqlalchemy:在日期时间列上应用类似 SQL 的 date() 函数

我想按日期分组并使用sqlalchemy计算id的结果数。不幸的是,我的包含日期信息的列created_datetime是一个日期时间,我想使用类似的sql函数按日期分组(created_datetime)为了按日期分组。这是我目前所拥有的......conn=engine.connect()s=my_db.my_table.alias()q=select([s.c.id]).\group_by(s.c.created_datetime).\count()result=conn.execute(q)foriinresult:print(i)conn.close()

python - JOIN python中公共(public)列上的两个数据框

我有一个数据框df:idnamecount1a102b203c304d405e50这里我有另一个数据框df2:id1pricerating11001.022002.033003.055005.0我想在列id和id1上加入这两个数据框(两者引用相同)。这是df3的示例:idnamecountpricerating1a101001.02b202002.03c303003.04d40NanNan5e505005.0我应该使用df.merge还是pd.concat? 最佳答案 使用merge:print(pd.merge(df1,df2,l

python - 合并两个 Pandas 数据帧,在一个时间列上重新采样,插值

这是我关于stackoverflow的第一个问题。对我放轻松!我有两个数据集由不同的采集系统以不同的采样率同时采集。一个非常规则,另一个则不是。我想创建一个包含两个数据集的数据帧,使用规则间隔的时间戳(以秒为单位)作为两者的引用。不规则采样的数据应该插值到规则间隔的时间戳上。这里有一些玩具数据展示了我正在尝试做的事情:importpandasaspdimportnumpyasnp#evenlyspacedtimest1=np.array([0,0.5,1.0,1.5,2.0])y1=t1#unevenlyspacedtimest2=np.array([0,0.34,1.01,1.4,1

python - pandas groupby 计算字符串在列上的出现次数

我想计算一个字符串在分组的pandas数据框列中的出现次数。假设我有以下数据框:catAcatBscoresAX6-4RETAX6-46-4AY6-3RETBZ6-0RETBZ6-1RET首先,我想按catA和catB分组。对于这些组中的每一个,我想计算scores列中RET的出现次数。结果应该是这样的:catAcatBRETAX1AY1BZ2按两列分组很容易:grouped=df.groupby(['catA','catB'])但下一步是什么? 最佳答案 调用apply在groupby的“分数”列中对象并使用矢量化str方法con

python - 文本列上的 Pyspark DataFrame UDF

我正在尝试对PySparkDataFrame中的某些Unicode列进行一些NLP文本清理。我已经在Spark1.3、1.5和1.6中尝试过,但似乎无法让事情在我的生活中发挥作用。我也尝试过使用Python2.7和Python3.4。我创建了一个非常简单的udf,如下所示,它应该只为新列中的每条记录返回一个字符串。其他函数将操作文本,然后将更改后的文本返回到新列中。importpysparkfrompyspark.sqlimportSQLContextfrompyspark.sql.typesimport*frompyspark.sqlimportSQLContextfrompyspa

python - 通过在两个现有列上使用 lambda 函数在 Panda 中创建一个新列

我可以通过定义用户函数然后使用应用在Panda中添加一个新列。但是,我想使用lambda来做到这一点;有办法解决吗?例如,df有两列a和b。我想创建一个新列c,它等于a和b之间的最长长度。像这样的东西:df['c']=df.apply(lambdax,len(df['a'])iflen(df['a'])>len(df['b'])orlen(df['b']))一种方法:df=pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'],'b':['sd','dfg','edr','df','fghjky']})df['c']=df.apply(lam