Questions tagged «dataframe»

数据框是表格数据结构。通常,它包含数据,其中行是观察值,列是各种类型的变量。虽然“数据框”或“数据框”是几种语言用于此概念的术语(R,Apache Spark,deedle,Maple,Python中的pandas库和Julia中的DataFrames库),但“表”是MATLAB和SQL。

5
从数据框中删除行名的显示
我正在使用以下代码创建数据框: df <- data.frame(dbGetQuery(con, paste('select * from test'))) 结果如下: UID BuildingCode AccessTime 1 123456 BUILD-1 2014-06-16 07:00:00 2 364952 BUILD-2 2014-06-15 08:00:00 3 95865 BUILD-1 2014-06-06 09:50:00 然后,我尝试通过使用以下代码删除此处建议的行名(1、2、3等): rownames(df) <- NULL 但是,当我打印出来时,df它仍然显示行名。创建数据框时有没有不包含行名的方法?我找到了一个建议,row.name = FALSE但是当我尝试它时,我只是出现了错误(我可能将其放置在错误的位置)。 编辑:我想做的是将日期框架转换为HTML表,我不希望表中存在行名。


10
如何透视Spark DataFrame?
我开始使用Spark DataFrames,我需要能够旋转数据以在多行1列中创建多列。在Scalding中有内置的功能,我相信Python中的Pandas,但是对于新的Spark Dataframe我找不到任何东西。 我假设我可以编写某种自定义函数来执行此操作,但是我什至不确定如何开始,尤其是因为我是Spark的新手。我谁都知道如何使用内置功能来做到这一点,或者对如何在Scala中编写东西的建议,这一点深表感谢。


7
重命名pyspark数据框聚合的列
我正在使用pyspark数据帧分析一些数据,假设df我正在聚合一个数据帧: (df.groupBy("group") .agg({"money":"sum"}) .show(100)) 这会给我: group SUM(money#2L) A 137461285853 B 172185566943 C 271179590646 聚合工作正常,但我不喜欢新的列名“ SUM(money#2L)”。是否有一种巧妙的方法可以将该列重命名为该方法可以人工读取的内容.agg?也许更类似于以下内容dplyr: df %>% group_by(group) %>% summarise(sum_money = sum(money))

8
R:向空数据框中添加行时丢失列名
我只是从R开始,遇到一个奇怪的行为:在空数据框中插入第一行时,原始列名丢失了。 例: a<-data.frame(one = numeric(0), two = numeric(0)) a #[1] one two #<0 rows> (or 0-length row.names) names(a) #[1] "one" "two" a<-rbind(a, c(5,6)) a # X5 X6 #1 5 6 names(a) #[1] "X5" "X6" 如您所见,列名1和2被X5和X6代替。 有人可以告诉我为什么会这样吗,并且有正确的方法来做到这一点而又不会丢失列名吗? shot弹枪解决方案是将名称保存在辅助向量中,然后在完成对数据帧的处理后将其重新添加。 谢谢 内容: 我创建了一个函数,该函数收集一些数据并将它们作为新行添加到作为参数接收的数据帧中。我创建数据框架,遍历数据源,将data.frame传递给每个函数调用以填充其结果。
69 r  dataframe  names  rbind 

4
添加一列多数民众赞成在熊猫连续行差异的结果
可以说我有一个这样的数据框 A B 0 a b 1 c d 2 e f 3 g h 0、1、2、3是时间,a,c,e,g是一个时间序列,而b,d,f,h是另一个时间序列。我需要能够向原始数据帧添加两列,这是通过计算某些列的连续行的差异而获得的。 所以我需要这样的东西 A B dA 0 a b (a-c) 1 c d (c-e) 2 e f (e-g) 3 g h Nan 我在数据框/系列上看到了一个叫做diff的东西,但是它做的略有不同,因为第一个元素将变为Nan。

7
如何使用几列中的值对熊猫数据框进行排序?
我有以下数据框: df = pandas.DataFrame([{'c1':3,'c2':10},{'c1':2, 'c2':30},{'c1':1,'c2':20},{'c1':2,'c2':15},{'c1':2,'c2':100}]) 或者,以人类可读的形式: c1 c2 0 3 10 1 2 30 2 1 20 3 2 15 4 2 100 以下排序命令按预期工作: df.sort(['c1','c2'], ascending=False) 输出: c1 c2 0 3 10 4 2 100 1 2 30 3 2 15 2 1 20 但是以下命令: df.sort(['c1','c2'], ascending=[False,True]) 结果是 c1 c2 …

7
根据字典将新列添加到数据框
我有一个数据框和一个字典。我需要向数据框添加新列,并根据字典计算其值。 机器学习,基于一些表添加了新功能: score = {(1, 45, 1, 1) : 4, (0, 1, 2, 1) : 5} df = pd.DataFrame(data = { 'gender' : [1, 1, 0, 1, 1, 0, 0, 0, 1, 0], 'age' : [13, 45, 1, 45, 15, 16, 16, 16, 15, 15], 'cholesterol' : [1, 2, 2, …

5
是否为每个变量解栈并返回值计数?
我有一个数据框,其中记录了19717人通过多项选择题对编程语言的选择的回答。第一栏当然是受访者的性别,其余则是他们选择的选项。因此,如果我选择Python,则我的响应将记录在Python列中,而不是bash,反之亦然。 ID Gender Python Bash R JavaScript C++ 0 Male Python nan nan JavaScript nan 1 Female nan nan R JavaScript C++ 2 Prefer not to say Python Bash nan nan nan 3 Male nan nan nan nan nan 我想要的是一个表,该表返回Gender记录下每个类别的实例数。因此,如果用Python用Python编码的5000名男性和用JS编码的3000名女性,那么我应该得到: Gender Python Bash R JavaScript C++ Male 5000 1000 800 …

4
有效地比较两列中的列表
当具有这样的Pandas DataFrame时: import pandas as pd import numpy as np df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']], 'yesterday': [['a', 'b'], ['a'], ['a']]}) today yesterday 0 ['a', 'b', 'c'] ['a', 'b'] 1 ['a', 'b'] ['a'] 2 ['b'] ['a'] ... etc 但是,我希望通过大约10万个条目在行的基础上在两列中找到这些列表的添加和删除。 它可与以下问题相提并论:Pandas:如何将DataFrame中的列表列与Pandas(不是for循环)进行比较? 但我正在研究这些差异,而且Pandas.apply对于许多条目而言,方法似乎并不那么快。这是我当前正在使用的代码。Pandas.apply使用numpy's setdiff1d方法: additions = df.apply(lambda row: np.setdiff1d(row.today, …

3
使用熊猫中的两个地理数据框获取最近的距离
这是我的第一个geodatframe: !pip install geopandas import pandas as pd import geopandas city1 = [{'City':"Buenos Aires","Country":"Argentina","Latitude":-34.58,"Longitude":-58.66}, {'City':"Brasilia","Country":"Brazil","Latitude":-15.78 ,"Longitude":-70.66}, {'City':"Santiago","Country":"Chile ","Latitude":-33.45 ,"Longitude":-70.66 }] city2 = [{'City':"Bogota","Country":"Colombia ","Latitude":4.60 ,"Longitude":-74.08}, {'City':"Caracas","Country":"Venezuela","Latitude":10.48 ,"Longitude":-66.86}] city1df = pd.DataFrame(city1) city2df = pd.DataFrame(city2) gcity1df = geopandas.GeoDataFrame( city1df, geometry=geopandas.points_from_xy(city1df.Longitude, city1df.Latitude)) gcity2df = geopandas.GeoDataFrame( city2df, geometry=geopandas.points_from_xy(city2df.Longitude, city2df.Latitude)) 城市1 City Country Latitude Longitude …

4
计算熊猫数据框中相似值的百分比
我有一个数据框df,有两列:脚本(带文本)和扬声器 Script Speaker aze Speaker 1 art Speaker 2 ghb Speaker 3 jka Speaker 1 tyc Speaker 1 avv Speaker 2 bhj Speaker 1 我有以下列表: L = ['a','b','c'] 使用以下代码, df = (df.set_index('Speaker')['Script'].str.findall('|'.join(L)) .str.join('|') .str.get_dummies() .sum(level=0)) print (df) 我得到这个数据框df2: Speaker a b c Speaker 1 2 1 1 Speaker 2 2 …

3
为什么用[:]与iloc [:]分配在熊猫中会产生不同的结果?
我对iloc在熊猫中使用不同的索引方法感到困惑。 假设我正在尝试将1维数据帧转换为2维数据帧。首先,我有以下一维数据框 a_array = [1,2,3,4,5,6,7,8] a_df = pd.DataFrame(a_array).T 我将其转换为大小为的二维数据帧2x4。我首先将二维数据帧预设如下: b_df = pd.DataFrame(columns=range(4),index=range(2)) 然后我使用for循环通过以下代码帮助我将a_df(1-d)转换为b_df(2-d) for i in range(2): b_df.iloc[i,:] = a_df.iloc[0,i*4:(i+1)*4] 它只给我以下结果 0 1 2 3 0 1 2 3 4 1 NaN NaN NaN NaN 但是当我改变b_df.iloc[i,:]为b_df.iloc[i][:]。结果是正确的,如下所示,这是我想要的 0 1 2 3 0 1 2 3 4 1 5 6 7 8 …

3
慢熊猫DataFrame MultiIndex重新索引
我有一个形式的熊猫DataFrame: id start_time sequence_no value 0 71 2018-10-17 20:12:43+00:00 114428 3 1 71 2018-10-17 20:12:43+00:00 114429 3 2 71 2018-10-17 20:12:43+00:00 114431 79 3 71 2019-11-06 00:51:14+00:00 216009 100 4 71 2019-11-06 00:51:14+00:00 216011 150 5 71 2019-11-06 00:51:14+00:00 216013 180 6 92 2019-12-01 00:51:14+00:00 114430 19 7 92 2019-12-01 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.