我想向此数据框添加一个重新缩放的列:
I,Value
A,1
A,4
A,2
A,5
B,1
B,2
B,1
Run Code Online (Sandbox Code Playgroud)
因此,新列(我们称之为scale)value在每组的列上都遵循一个函数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) 我想在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添加字符串标题?
我有一个多索引的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) 我有一个像下面这样的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)
请帮忙.
从具有重复值的简单数组开始:
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)
这很有用,因为它也会返回值的频率,但我仍然坚持按频率过滤.
这可能是显而易见的,但对我来说不是:我有一个 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 数据库的新手。我有一个很大的 csv 文件,无法放入我机器的内存中。在使用 加载 db 中的所有记录之前USING PERIODIC COMMIT,我想在小数据样本上测试我的密码查询。如何加载仅加载 1000 行数据并测试我的查询。
数据具有简化形式的列[Employee, CompanyName]。我想创建关系为(:Employee)-[:Employed]->(:Company). Employee 和 CompanyName 节点已经加载到数据库中。
我正在读取一个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中仅存储选择的列以减小数据库的大小?
谢谢你的帮助.
我要去远一点这大约字典中的值映射到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) 我有两个数据帧,我需要使用第一个数据帧向第二个数据帧添加一个新列,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)
任何帮助将不胜感激