我正在尝试创建一个数据帧,其中包含来自多个URL的数据。代码可以工作,但是我无法将数据递归地存储在一个数据帧中。每次都用新url的数据替换数据帧(称为帧),而不是将新数据连接到同一帧。谢谢你,我非常感谢你的帮助
import urllib
import re
import json
import pandas
import pylab
import numpy
import matplotlib.pyplot
from pandas import *
from pylab import *
fr
如何在hdf5表中更改所有字符串列的最小项大小?我在运行时不知道数据帧结构,因此无法硬编码。请参阅文档
itemsize是在第一次追加时创建的(以后不能更改)。如果min\u itemsize
未指定它将是该追加中字符串的最大长度
In [1]: df = DataFrame({ 'A' : ['foo','bar']})
In [2]: store = pd.HDFStore('test.h5',mode='w')
In [3]: store.append('df',df,min_item
我有一个带有多索引的熊猫数据帧。不幸的是,其中一个指数以年为字符串
e、 g.“2010”、“2011”
如何将它们转换为整数
更具体地说
MultiIndex(levels=[[u'2010', u'2011'], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]],
labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 1
虽然pandas 0.15.0之后的新分类系列支持非常棒,但我对他们决定让底层数据除了通过带下划线的变量之外无法访问感到有点恼火。考虑下面的代码:
import numpy as np
import pandas as pd
x = np.empty(3, dtype=np.int64)
s = pd.DatetimeIndex(x, tz='UTC')
x
Out[17]: array([140556737562568, 55872352, 32]
标签: Pandas
group-bynestedgroupingmin
我刚刚开始了解熊猫,我无法克服一个概念上的问题。我的数据框架如下:
df=pd.DataFrame({'ANIMAL':[1,1,1,1,1,2,2,2],
'AGE_D' : [3,6,47,377,698,1,9,241],
'AGE_Y' : [1,1,1,2,2,1,1,1]})
我想在animal and age_y中创建一个嵌套组,然后在子组中选择最小值。
所需的输出将是:
ANIMAL AGE_Y AGE_D
1
我正在使用的df如下所示:
Year Age Income
1945 1 234
1945 1 65
1945 2 234
...
1946 1 34
...
2015 5 34
我想把它转换成这样,收入值填充df,年龄是指数
Age 1955 1956 1957 ... 2015
0
1
2
3
...
99
这看起来像是您希望透视表。熊猫很好
import pandas as pd
df = pd.DataFrame([[1945, 1, 2
假设给一个列水果,我有57个香蕉,54个苹果和其他空值。
现在我想用fillna填充空值,其中57/(57+54)概率作为香蕉,54/(57+54)概率作为苹果,我应该怎么做
Fruit
------
None
Banana
Fruit
Banana
....(with 57 banana, 54 apple, 10 None)
设置
fruit = pd.Series(['banana'] * 57 + ['apple'] * 54 + [None] * 10, name='fruit')
标签: Pandas
concatenationmulti-index
我有一个多索引数据框架,外层索引由股票名称组成,内层索引由日期组成
Open High Low Close
AAPL 2010-01-04 213.429998 214.499996 212.380001 214.009998
2010-01-08 210.299994 212.000006 209.060005 211.980005
OPK 2010-01-
我想在一个子地块中使用pandas timeseries,在另一个子地块中使用矩形创建一个绘图
如果我不包括子地块,我可以很容易地实现这一点:
将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
将matplotlib.dates导入为mdates
将matplotlib.patches作为MPatch导入
N=100
np.随机种子(N)
日期=pd.日期\范围(开始时间=2018-01-01',期间=N,频率=D')
三分之一δ=(日期[-1]-日期
我有一个数组,我需要通过一个文本字符串的列变量进行排序。我尝试了三种方法。前两个是相似的。最后一种方法进行排序,但它也会生成一个神秘专栏
以下是小测试数据集:
raw_corpus #test data
unique_ID count trigger_channel_cat
0 11530 1 Photo and Video
1 17176 1 Environment Control and Monitoring
2 6984 1 Securi
我正在尝试添加客户帐户的所有余额,但我在这样做时遇到困难。有两列,“客户”和“余额”列。数据框如下所示:
Customer Balance
John Doe account1 400
John Doe account2 600
John Doe account3 200
Jane Doe account1 500
Jane Doe account2 100
John Deer account1 800
我试图做到
我想按组计算一个值的标准偏差。
我得到了意想不到的结果。有人能帮忙吗
from numpy import nan
df = {'value': {1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: nan, 9: nan, 10: 0.1, 11: 0.3, 12: 0.6, 13: 0.2, 14: -0.1, 15: 0.2}}
df = pd.DataFrame.from_dict(df)
df['group'] = [1,
我有一个PySpark UDF,它接受一个数组并返回其后缀:
func.udf( lambda ng: ng[1:], ArrayType(IntegerType()) )
是否可以将其转换为标量udf?
熊猫是否提供必要的矢量化操作
感谢您可以使用udf获得相同的功能,但请确保从udf返回包含列表的序列,因为序列通常需要元素列表,如果您直接以序列形式返回列表,则行数组将被展平并转换为多行
编辑正如OP在评论中指出的那样,我以前的答案(pd.Series([v[0][1:])使用索引是错误的,
我有两个日期:2018年11月1日和2019年1月1日。
我想生成一个与每个月的第一个日期相对应的月日期。我做到了:
didx=pd.date_range(start='11/01/2018', end='01/01/2019', freq='M',closed=None)
但我得到了:
2018-11-30
2018-12-31
我想:
2018-11-01
2018-12-01
2019-01-01
使用freq='MS'
pd.date_range(start='11/01/2018
基于我之前的问题
我有两个数据帧,如下所示:
df1
ID Time
ID_E 9:07:00
ID_E 9:15:00
ID_B 9:09:00
ID_B 9:14:00
df2
Time X Y
9:07:00 767597 9427273
9:08:00 767597 9427284
9:09:00 767608 9427284
9:10:00 767608 94272
我有一个数据帧列“df_weather[0]”,如下所示(字符串非常长)
S.No,值,
452,“温度”:83.0,
514,当前“温度”:81.0,
653,新修改的“温度”:89.0,
我想提取字符串温度后的值。ie 83.0、81.0和89.0
为此,我找到了字符串“temperature”的位置,并将所有三个值存储到一个列表中。现在该列表有三个位置
第二,我尝试通过将每个成员放入一个列表来分割字符串
list_weather=df_weather[1].str.find(““温度”:
我有一个名为Box的列名,其中包含4000多行,具有唯一的变量名。行中的每个变量由行中字符串中的第一个字母和最后一个数字区分。例如,A_B(1)、A_B(1)、C_D(3)、D_F(2)、AA_B(1)。
因为,在本例中,我想删除字符串中包含_u(双下划线)的所有行
以前我做过的是基于名字的。但我不想被硬编码。我想成为普通人。只需删除所有包含双下划线(_)的行
请告诉我如何使用模式匹配
df.loc[~df['Box'].str.contains(r'_{2}')]
例如:
import
我有5k行,每行最多有10个关联值,例如:
df=pd.DataFrame({'col1':['a','b','c'],'col2':['a1,a2,a3','b1','c1,c2']})
col1 col2
0 a a1,a2,a3
1 b b1
2 c c1,c2
我想制作一个独特的映射,如:
pd.DataFrame({'col1':['a','a','a','b','c','c'],'col2':['a1','a2','a3','b1','c1'
我目前正在Python/Excel中使用xlwings,并希望在放入带有数据框的值后格式化一个表。但是,我无法按照我的要求设置表的格式。实际上,API似乎不理解列已经设置好了。
你能告诉我怎么做吗?这是我的密码:
range_ = wb.sheets[sheet_name].range("B2")
range_.expand().clear_contents()
range_.options(pd.DataFrame, index=True).value = data_df
range_.se
我的df在下面
gender list
MALE [['Office/Work'], ['31-40'], ['Salaried'], ['Master’s/PhD degree']]
预期输出df['Out']
Type Age EmpType Education
Office/Work 31-40 Salaried Master’s/PhD degree
如果列表中只有一个元素值,请使用:
c = ['Type',
我有一个熊猫数据帧df,如下所示:
0 1 2 3 4 5 6
0 3 74
1 4 2
2 -9
3 -1 2 -16 -21
4 1
5 28
0
如何在clausula on将df1和df2合并为两列(fiels)
例如:
dfUltStatus = pd.merge(dfUltStatus, dfDescStatus,
on=['CODIGO_STATUS','SUB_CODIGO_STATUS'], how = 'left')
对象将通过这两个字段合并两个数据帧,以产生描述字段 您是否尝试过:
dfUltStatus = dfUltStatus.merge(dfDescStatus,
标签: Pandas
time-seriesfacebook-prophetfbprophet
我正在使用Prophet(Python)大量预测和分析时间序列。这意味着我的时间序列共享相同的属性,但它们并不完全相同。它们都从2016-01-01运行到2020-07-01
我想用前3年的数据交叉验证我的结果,我的预测目标是15天
以15天预测为目标,使用前3年测试我的健康状况的最佳配置是什么
我天真的尝试如下:
df_cv = cross_validation(mts, initial="1095 days", period='31 days', horizon = '1
我有一张这样的桌子:
Scen F1 F2 F3 F4
0 S1 1 0 1 0
1 S2 0 1 0 1
并希望通过Scen进行搜索,并返回该行==1的列名,例如,对于S1,我需要F1,F3作为结果
我尝试了以下方法,可以通过硬编码df_col[0]得到结果,但需要能够动态地完成这项工作
最好的方法是什么
将熊猫作为pd导入
d={'Scen':[“S1”,“S2”],
“F1”:[1,0],
“F2”:[0,1],
“F3”:[1,0],
一行简单的代码df.iloc[100]=df.iloc[500]在具有混合类型的大型数据帧上速度非常慢,因为熊猫会复制整个列()。我不明白为什么这种行为是必要的,如果我事先确定数据类型是相同的,如何避免这种行为,并强制pandas只更新相关值。如果DF为单一类型,则不会进行复制,并且会就地修改值
我找到了一个似乎具有预期效果的变通方法,但它只适用于行号:
for c in df.columns:
df[c].array[100] = df[c].array[500]
它实际上比df.i
我怎样才能算出通过以下方法获得的相关性的质量
说到质量,我指的是有多少数据是重叠的,因此被.corr()使用。让我们用一个简短的例子来说明这一点:
让我们设置一个示例数据帧:
time1 = pd.date_range(start='2020-01-01', end='2020-01-5', freq='D')
time2 = pd.date_range(start='2020-01-04', end='2020-01-8', freq='D')
time3 = pd.date_range(st
我有这样一个数据帧:
ID | size | p1 | p2 ||p10 |数量| o1 | o2 |……| o10 |
p1到p10和o1到o10是32个值。大小是一个字符串。对于一个ID,可以有1个或多个大小。对于每个大小,都有一行p1..p10,但对于每个ID,只有一行o1..o10,无论它包含1个或多个大小。
我有10个这样的线性方程:
f1 = [(p1S1*qS1)+(p1S2*qS2)+...+(p1Sn*qSn)] + o1
f2 = [(p2S1*qS1)+(p2S2*qS2)
我有下面的数据样本。我想使用d=df.groupby(['id2','type','id1']).sum()['clicks']或d=df.groupby(['id2','type','id1']).agg({'clicks':'sum}.id2是一个用户id。有许多类型,每个类型都有不同的id。我想使用groupby的结果并创建一个透视表。新的表索引是id2,列将是类型列的值I。这些值将是每种类型的单击次数之和
df = pd.DataFrame({"id1": [493,
我有两个具有不同数据的数据帧,我需要根据在DF1的两列中获得的信息在DF2上添加一个新列。在下面的示例中,我需要检查在DF中具有相同城市和DOB值的所有条目,并在DF1中添加一个新列,表示是或否
DF1:
City DOB Gender Test
NYC 01/05/1990 F Positive
NYC 01/06/1991 M Negative
LA 12/01/1980 F
我目前正试图通过优化依赖于这些权重的效用函数来找到最优投资组合权重。我有一个包含返回时间序列的数据帧,名为rets_optns。rets_optns有100组8项资产(800列-第一组第1列至第8列,第二组第9列至第16列)。我还有一个名为rf_options的数据框架,它有100列,表示每组收益的相应无风险利率。我想创建一个由投资组合收益组成的新数据框架,使用以下公式:p。返回=rf_optns+和(权重*rets_optns)。它应该有100列,每列应该代表由属于同一集团的8项资产组成的投资
我有以下日期数据,每个日期都分配给值1
是否有一种方法可以获得每小时DateTime列表的pandas列表,这样除了xls文件中的值之外,所有值都是0?
它类似于插值,但插值只是插值,而在这里,我只希望将剩余的日期填充为0。我希望将以下日期的整个24小时指定为一个。我尝试在for循环方法中执行此操作,但它只需要比以往更长的时间,而且非常不实用。使用pandas datetime访问器提取datetime对象的日期部分。然后使用来匹配这些值
# sample data
df = pd.DataFr
当我尝试在seaborn中设置标签时,我得到了一个错误,但同样的事情在matplotlib中工作得非常好。下面是seaborn代码
g = plt.figure(figsize=(15,5))
g = sns.relplot(x='Month', y='Year', data=retail_df2, kind='scatter')
months = np.arange(1,13)
g.set_xticklabels(labels = months)
plt.title('Sales by Mon
我一直试图通过使用lambda函数来选择要求和的行()来聚合一个组中的多个列。我的问题是sum()只提供一个计数。我在熊猫方面非常平庸,已经搜索过但没有找到答案。任何答案都将不胜感激,我当然非常感谢您抽出时间
groupedByEmployeeShift['Duration1'] = groupedByEmployeeShift['Duration'] ### create a dummy column for ShiftOT below
groupedByEmployeeShift['Rou
我有一个关于物种及其出现的数据框架。摘录如下:
+-------------+------------+-------------------------------------------+--------------+-----------------+-------------+-----------+------------+----------+
| Family | Genus | Species
我也尝试了PyArrow,在我的示例中,我使用spark.sql语句获得了spark-datframe。之后我想转换成熊猫数据帧。为了显示执行时间,我运行了以下语句
import time
startTime = time.time()
df=df.toPandas()
executionTime = (time.time() - startTime)
executionTime
这是1021.55
我也试过了
import time
startTime = time.time()
spark
所以我在做这个超级简单的程序,它返回一个带有复制警告的集合。我在用iloc
我的目标是检查中的值是否为null,并将其替换为具有3个None值的元组。它确实有效,但我想避免复制警告
df = pd.DataFrame({'a':[None,1, 2], 'b':[None, (1,2,3), (3,4, 5)]})
a b
0 NaN None
1 1.0 (1, 2, 3)
2 2.0 (3, 4, 5)
if pd.isna(df['b'].iloc[0]):
我想根据系列中最后一个有效索引有条件地向前填充一个系列。例如,假设我们有以下系列:
import pandas as pd
ser = pd.Series(['a', 'b', 'b', pd.NA, 'c', pd.NA, pd.NA, 'd', pd.NA])
ser
0 a
1 b
2 b
3 <NA>
4 c
5 <NA>
6 <NA>
7 d
8 <NA>
在我正在使用的程序中,我必须显式设置包含布尔数据的列的类型。有时,此列中的所有值都是“无”。除非我提供明确的类型信息,否则Pandas将为该列推断错误的类型信息
是否存在表示可空布尔值的兼容类型?我想做这样的事,但保留不存在的东西:
s = pandas.Series([True, False, None]).astype(bool)
print([v for v in s])
给出:
[True, False, False]
[1, 2, <NA>, <NA>]
通过在我的数据帧上执行此命令,我获得以下数据帧:
label=dataframe[['label','area']].groupby(['label'])。description()
打印(标签)
区域
计数平均标准最小值25%50%75%最大值
标签
方形379.0 546.057942 728.552019 67.29 249.24 373.37 569.025 9772.17
三角形179.0 439.527765 363.232426 66.61 259.03 360.22 496.5
Hy,
我有一个Spark数据框架,并使用SQL上下文进行了一些转换,例如,在所有数据中只选择两列
df_oraAS = sqlContext.sql("SELECT ENT_EMAIL,MES_ART_ID FROM df_oraAS LIMIT 5 ")
但是现在我想把这个sqlcontext转换成一个熊猫数据帧,我正在使用
pddf = df_oraAS.toPandas()
但是输出在这里停止,我需要重新启动IDE(spyder)
接下来,我创建了一个sparkContext来操作数
原始数据集:
index = pd.MultiIndex.from_product([['AAA','BBB'], pd.DatetimeIndex(['2017-08-17', '2017-08-20', '2017-09-08'])])
df = pd.DataFrame(data=[[1.0], [3.0], [5.0], [7.0], [9.0], [11.0]], index=index, columns=['foo'])
将数据帧重新索引为abble,以使用居中滚动窗口(使索引一致
当我试图从dataframe中获取一个系列时,我遇到了这个问题
anaconda3/lib/python3.6/site packages/numpy/core/fromnumeric.py:52:FutureWarning:Reformate已被弃用,并将在后续版本中提出。请改为使用.values.reformate(…)
返回getattr(对象,方法)(*args,**kwds)
这是代码片段
for idx, categories in enumerate(categorical_col
我有一个熊猫数据框和一个熊猫系列。我想添加具有dataframe值的新常量列。例如:
In [1]: import pandas as pd
df1 = pd.DataFrame({'a': [1,2,3,4,5], 'b': [2,2,3,2,5]})
In [2]: df1
Out[2]:
a b
0 1 2
1 2 2
2 3 3
3 4 2
4 5 5
In [3]: s1 = pd.Series({'c':2, 'd':3})
In
我的简化数据框如下所示:
df = pd.DataFrame()
df['A'] = ('IGNORE','IGNORE','IGNORE','YES','IGNORE','YES','YES','YES','IGNORE','IGNORE','IGNORE','YES','IGNORE','IGNORE','IGNORE','IGNORE','IGNORE','IGNORE','IGNORE','IGNORE','IGNORE', 'NO','IGNORE','IGNORE','IGNORE'
具有如下读数的df:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1000, size=100), index=range(100), columns = ['reading'])
希望根据每一行的指数找出每一行的最大升幅和最大降幅,理论上可以使用以下公式实现
如何对其进行编码
尝试:
df.assign(gr8Rise=df.rolling(df.index).apply(lambda
我有一个名为hours\u by\u analysis\u date的系列,其中索引是datetimes,值是一个整数列表。例如:
Index |
01-01-2000 | [1, 2, 3, 4, 5]
01-02-2000 | [2, 3, 4, 5, 6]
01-03-2000 | [1, 2, 3, 4, 5]
我想返回值为[1,2,3,4,5]的所有索引,因此它应该返回01-01-2000和01-03-2000
我尝试了按分析日期计算的hours\u。其中(fh\u by\
我有一个geopandas数据帧
mmsi lat lng Paul Art Bob
123 51 65 True False False
234 78 91 False True False
345 45 13 False False True
456 61 79 False False False
我试图提取列值为True的列名,因此预期
我有一个多索引数据帧。在我的示例中,有两个级别:车辆(具有属性A和B)和参考天数(具有属性1和2)。对于每辆车,每天都有一组时间(以字符串格式,例如“2330”对应于晚上11点30分,“30”对应于上午0点30分)。这些时间点按时间顺序排列,但作为1个参考日,它们可能会越过“午夜”线。也就是说,凌晨02:00的一个时间点可以计算到前一天。我希望有一个新的列,如果该行的时间时刻实际上对应于“新”的一天(即午夜线是否已越过),则该列的值为1。此示例对应于列车时刻表,其中午夜至(大约)凌晨4点之间的行
我正在寻找一种比较数据库(mysql)表和CSV数据的有效方法。
首选方法是使用dataframes来比较数据,并找出数据库中任何“缺少的更新”
CSV的范围从40MB到3.5GB,表最多可以有几百(200-300)列,最大表上当前的最大行数为6亿。我最大的担心和限制是内存利用率。
我做了这个比较,只在关键列(来自数据库和csv)上识别丢失的记录,虽然效果很好,但内存利用率最高。要确定数据库中没有应用的任何更新,我需要进行一次整行比较,这将非常昂贵
如果你已经用自定义脚本或工具做了类似的事情,你
我有一个多索引数据帧df1as:
node A1 A2
bkt B1 B2
Month
1 0.15 -0.83
2 0.06 -0.12
bs.columns
MultiIndex([( 'A1', 'B1'),
( 'A2', 'B2')],
names=[node, 'bkt'])
node A1 A2
bkt B1 B2
Mo
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 280 页