小编Fab*_*nna的帖子

熊猫-分组和重新缩放值

我想向此数据框添加一个重新缩放的列:

I,Value
A,1
A,4
A,2
A,5
B,1
B,2
B,1
Run Code Online (Sandbox Code Playgroud)

因此,新列(我们称之为scalevalue在每组的列上都遵循一个函数I。该函数只是每个组范围内的归一化:

lambda x: (x-min(x))/(max(x)-min(x))
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了:

d = df.groupby('I').apply(lambda x: (x-min(x))/(max(x)-min(x)))
Run Code Online (Sandbox Code Playgroud)

收到以下TypeError:

TypeError: Could not operate array(['A'], dtype=object) with block values index 1 is out of bounds for axis 1 with size 1
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
2757
查看次数

使用标题将数据帧写入excel

我想在Excel中打印出一个数据帧.我使用ExcelWriter如下:

writer = pd.ExcelWriter('test.xlsx')
df = DataFrame(C,ind)    # C is the matrix and ind is the list of corresponding indices 
df.to_excel(writer, startcol = 0, startrow = 5)
writer.save()
Run Code Online (Sandbox Code Playgroud)

这产生了我需要的东西,但另外我想在表格(startcol=0,startrow=0)上添加一些带有一些文本(解释)的标题.

如何使用ExcelWriter添加字符串标题?

python excel xlsx dataframe pandas

4
推荐指数
2
解决办法
4820
查看次数

使用MultiIndex的Pandas数据框:排除级别值

我有一个多索引的pandas数据帧,如下所示.

import numpy as np
import pandas as pd

arrays = [np.array(['bar', 'bar', 'bar', 'bar', 'foo', 'foo', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']),
          np.array(['blo', 'bla', 'bla', 'blo', 'blo', 'blu', 'blo', 'bla'])]

df = pd.DataFrame(np.random.randn(8, 4), index=arrays)

df.sort_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)

返回:

                    0         1         2         3
bar one bla  0.478461  1.030308  0.012688  0.137495
        blo  0.476041 -1.679848  1.346798  0.143225
    two bla  1.148882 -2.074197 -2.567959  1.258016
        blo  1.062280  3.846096 -0.346636  1.170822
foo one blo -0.761327  0.262105  0.151554  1.066616
    two blu  1.431951  0.043307 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
1
解决办法
1441
查看次数

如何将小时添加到pandas dataframe列

我有一个像下面这样的pandas数据帧时间列.

 segments_data['time']
 Out[1585]: 
 0      04:50:00
 1      04:50:00
 2      05:00:00
 3      05:12:00
 4      06:04:00
 5      06:44:00
 6      06:44:00
 7      06:47:00
 8      06:47:00
 9      06:47:00
Run Code Online (Sandbox Code Playgroud)

我想在上面的时间栏上添加5小时30分钟.我在python中做跟随.

pd.DatetimeIndex(segments_data['time']) + pd.DateOffset(hours=5,minutes=30)
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.

TypeError: object of type 'datetime.time' has no len()
Run Code Online (Sandbox Code Playgroud)

请帮忙.

python datetime dataframe pandas

4
推荐指数
3
解决办法
6620
查看次数

numpy在数组中的重复值中选择固定数量的值

从具有重复值的简单数组开始:

a = np.array([2,3,2,2,3,3,2,1])
Run Code Online (Sandbox Code Playgroud)

我试图从中选择最多2个唯一值.生成的数组将显示为:

b = np.array([2,3,2,3,1])
Run Code Online (Sandbox Code Playgroud)

无论物品的顺序如何.到目前为止,我试图找到唯一的值:

In [20]: c = np.unique(a,return_counts=True)

In [21]: c
Out[21]: (array([1, 2, 3]), array([1, 4, 3]))
Run Code Online (Sandbox Code Playgroud)

这很有用,因为它也会返回值的频率,但我仍然坚持按频率过滤.

python arrays numpy

4
推荐指数
1
解决办法
55
查看次数

neo4j/cypher:字符串到映射的内联转换

这可能是显而易见的,但对我来说不是:我有一个 JSON 对象,它有一个包含字符串化 JSON 的属性(不要问为什么,它必须是这样),当我展开该对象并获取该属性(键)时有没有办法转换为内联到密码查询的映射?

WITH {input} AS S
UNWIND S AS stat
WITH stat.key.str as K, stat.value as value
UNWIND K as key
RETURN key, value
Run Code Online (Sandbox Code Playgroud)

返回:

核心价值  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -     
- - - - - ------------------------------------------------------
{"角色":"消费者", "ipproto":"TCP","l7proto":"tcp:80","port":80,"dir":""} 156
{"角色":"消费者","ipproto":"TCP"," l7proto":"tcp:443","端口":443,"dir":""} 223
{"角色":"消费者","ipproto":"TCP","l7proto":"MSN","端口“:1863,”目录“:”“} 106208

是否可以解析/加载键中的字符串值以将其读取为映射,或者我是否必须在密码查询之外将其转换?

抱歉 - 我对 Neo4j 和 cypher 都不是菜鸟......

neo4j cypher

4
推荐指数
1
解决办法
2378
查看次数

仅从 Neo4j 中的大型 csv 文件加载少量样本

我是 Neo4j 数据库的新手。我有一个很大的 csv 文件,无法放入我机器的内存中。在使用 加载 db 中的所有记录之前USING PERIODIC COMMIT,我想在小数据样本上测试我的密码查询。如何加载仅加载 1000 行数据并测试我的查询。

数据具有简化形式的列[Employee, CompanyName]。我想创建关系为(:Employee)-[:Employed]->(:Company). Employee 和 CompanyName 节点已经加载到数据库中。

csv neo4j cypher

4
推荐指数
1
解决办法
2234
查看次数

pandas - 如何仅将选定的DataFrame列保存到HDF5

我正在读取一个csv示例文件并将其存储在.h5数据库中..csv的结构如下:

User_ID;Longitude;Latitude;Year;Month;String
267261661;-3.86580025;40.32170825;2013;12;hello world
171255468;-3.83879575;40.05035005;2013;12;hello world
343588169;-3.70759531;40.4055946;2014;2;hello world
908779052;-3.8356385;40.1249459;2013;8;hello world
289540518;-3.6723114;40.3801642;2013;11;hello world
635876313;-3.8323166;40.3379393;2012;10;hello world
175160914;-3.53687933;40.35101274;2013;12;hello world 
155029860;-3.68555076;40.47688417;2013;11;hello world
Run Code Online (Sandbox Code Playgroud)

我把它放在带有pandas to_hdf的.h5商店中,选择传递给.h5只有几列:

import pandas as pd

df = pd.read_csv(filename + '.csv', sep=';')

df.to_hdf('test.h5','key1',format='table',data_columns=['User_ID','Year'])
Run Code Online (Sandbox Code Playgroud)

我使用HDFStore和read_hdf在.h5文件中存储的列中获得了不同的结果,特别是:

store = pd.HDFStore('test.h5')
>>> store
>>> <class 'pandas.io.pytables.HDFStore'>
File path: /test.h5
/key1            frame_table  (typ->appendable,nrows->8,ncols->6,indexers->[index],dc->[User_ID,Year])
Run Code Online (Sandbox Code Playgroud)

这是我所期望的(只有'User_ID'和'Year'列存储在数据库中),尽管ncols-> 6意味着实际上所有列都已存储在.h5文件中.

如果我尝试使用pd.read_hdf读取该文件:

hdf = pd.read_hdf('test.h5','key1')
Run Code Online (Sandbox Code Playgroud)

并要求钥匙:

hdf.keys()
>>> Index([u'User_ID', u'Longitude', u'Latitude', u'Year', u'Month', u'String'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的,因为原始.csv文件的所有列仍然在.h5数据库中.如何在.h5中仅存储选择的列以减小数据库的大小?

谢谢你的帮助.

python hdf5 pandas hdfstore

3
推荐指数
1
解决办法
1万
查看次数

pandas - 将嵌套字典值映射到数据框列

我要去远一点大约字典中的值映射到dataframes前面的问题。我有一个简单的数据框 df ,如:

U,id
111,01
112,02
112,03
113,04
113,05
113,06
114,07
Run Code Online (Sandbox Code Playgroud)

我想在新列上映射以下嵌套字典:

d = {112: {'en': 1, 'es': 2}, 113: {'zh': 1, 'ja': 1, 'es': 2}, 114: {'es': 1}, 111: {'ar': 2, 'en': 1}}
Run Code Online (Sandbox Code Playgroud)

仅考虑最常见的L值,即 112:'es'、113:'es'、114:'es'、111:'ar'。

在一个简单的字典案例中,我可以使用df['C'] = df['U'].map(d). 我怎么能只取以前的最高值呢?结果数据框将显示为:

U,id,C
111,01,ar
112,02,es
112,03,es
113,04,es
113,05,es
113,06,es
114,07,es
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
3258
查看次数

根据来自另一个数据帧的值将列添加到数据帧

我有两个数据帧,我需要使用第一个数据帧向第二个数据帧添加一个新列,TRUE如果它存在于第一个数据帧 else 中,则该列具有一个值FALSE

第一个数据框包含美国大学城的州和地区名称

    State    RegionName
  0 Alabama  Auburn
  1 Alabama  Florence
  2 Alabama  Jacksonville
  3 Illinois Chicago
Run Code Online (Sandbox Code Playgroud)

第二个数据帧具有每季度的增长率。它在 State 和 RegionName 上建立索引

                         2008q3         2008q4
State       RegionName                  
Alabama     Jacksonville 499766.666667  487933.333333
California  Los Angeles  469500.000000  443966.666667
Illinois    Chicago      232000.000000  227033.333333
Run Code Online (Sandbox Code Playgroud)

所以输出数据帧将是

                         2008q3         2008q4         univ_town
State       RegionName                  
Alabama     Jacksonville 499766.666667  487933.333333  TRUE
California  Los Angeles  469500.000000  443966.666667  FALSE
Illinois    Chicago      232000.000000  227033.333333  TRUE
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

python dataframe pandas

3
推荐指数
1
解决办法
2706
查看次数

标签 统计

python ×8

pandas ×7

dataframe ×4

cypher ×2

neo4j ×2

arrays ×1

csv ×1

datetime ×1

excel ×1

hdf5 ×1

hdfstore ×1

numpy ×1

xlsx ×1