Pandas的文档中有许多用于处理以各种格式存储的数据的最佳实践示例.
但是,我无法找到使用MySQL等数据库的任何好例子.
任何人都可以指向我链接或给出一些代码片段,如何使用mysql-python将查询结果转换为Pandas中的数据帧有效吗?
我正在使用pandas库,我想在df
具有n列(n> 0)的数据帧中添加两个新列.
这些新列是将函数应用于数据框中的一列的结果.
要应用的功能如下:
def calculate(x):
...operate...
return z, y
Run Code Online (Sandbox Code Playgroud)
为仅返回值的函数创建新列的一种方法是:
df['new_col']) = df['column_A'].map(a_function)
Run Code Online (Sandbox Code Playgroud)
所以,我想要的,并尝试不成功(*),是这样的:
(df['new_col_zetas'], df['new_col_ys']) = df['column_A'].map(calculate)
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?我没有任何线索扫描文档.
**df['column_A'].map(calculate)
返回一个pandas系列,每个项目由一个元组z,y组成.并尝试将其分配给两个dataframe列会产生ValueError.*
我有一个数据框,可能有也可能没有相同值的列.例如
row A B
1 9 0
2 7 0
3 5 0
4 2 0
Run Code Online (Sandbox Code Playgroud)
我想回来
row A
1 9
2 7
3 5
4 2
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来识别是否存在这些列中的任何一列然后将其删除?
我正在使用Pandas库进行遥感时间序列分析.最后我想通过使用chunk-sized将我的DataFrame保存到csv,但我遇到了一个小问题.我的代码生成了6个NumPy数组,我将其转换为Pandas系列.这些系列中的每一个都包含很多项目
>>> prcpSeries.shape
(12626172,)
Run Code Online (Sandbox Code Playgroud)
我想将系列添加到Pandas DataFrame(df)中,这样我就可以通过chunk将它们保存到csv文件中.
d = {'prcp': pd.Series(prcpSeries),
'tmax': pd.Series(tmaxSeries),
'tmin': pd.Series(tminSeries),
'ndvi': pd.Series(ndviSeries),
'lstm': pd.Series(lstmSeries),
'evtm': pd.Series(evtmSeries)}
df = pd.DataFrame(d)
outFile ='F:/data/output/run1/_'+str(i)+'.out'
df.to_csv(outFile, header = False, chunksize = 1000)
d = None
df = None
Run Code Online (Sandbox Code Playgroud)
但是我的代码卡在下面一行给出内存错误
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
有什么建议?是否可以按块填充Pandas DataFrame块?
我有一个Pandas系列,基于一个随机数,我想选择一行(下面的代码示例中为5)并删除该行.删除行时,我想为剩余的行(0到8)创建一个新索引.代码如下:
print 'Original series: ', sample_mean_series
print 'Length of original series', len(sample_mean_series)
sample_mean_series = sample_mean_series.drop([5],axis=0)
print 'Series with item 5 dropped: ', sample_mean_series
print 'Length of modified series:', len(sample_mean_series)
print sample_mean_series.reindex(range(len(sample_mean_series)))
Run Code Online (Sandbox Code Playgroud)
这是输出:
Original series:
0 0.000074
1 -0.000067
2 0.000076
3 -0.000017
4 -0.000038
5 -0.000051
6 0.000125
7 -0.000108
8 -0.000009
9 -0.000052
Length of original series 10
Series with item 5 dropped:
0 0.000074
1 -0.000067
2 0.000076
3 -0.000017
4 -0.000038
6 0.000125
7 -0.000108
8 -0.000009 …
Run Code Online (Sandbox Code Playgroud) 我已经看到很多关于如何按层次排列数据帧行索引的示例,但我正在尝试对列执行相同的操作并且不理解语法:
鉴于:
df = pd.DataFrame(np.random.randn(10,10),
columns=['consumption', 'voltage', 'consumption',
'voltage', 'temperature', 'humidity', 'consumption',
'voltage','temperature','humidity'],
index= pd.date_range('20000103',periods=10))
>>> df
consumption voltage consumption voltage temperature \
2000-01-03 -1.327735 -1.440285 0.317122 -1.120105 1.736651
2000-01-04 0.132531 0.646972 2.296734 0.332154 -0.541792
2000-01-05 0.127623 0.592778 0.162096 0.107398 -0.628785
2000-01-06 -1.441151 0.215424 0.021068 0.683085 -0.783994
2000-01-07 -0.157848 1.566780 0.599017 -0.628216 0.500251
2000-01-08 -0.498926 0.338771 0.400159 1.571975 0.255635
2000-01-09 0.516618 -1.936360 0.199388 -0.110415 2.690859
2000-01-10 -0.779012 -1.310022 -1.207503 0.095679 -0.134244
2000-01-11 0.644262 0.068196 1.041745 -0.444408 -0.751595
2000-01-12 -0.608046 0.506588 …
Run Code Online (Sandbox Code Playgroud) 初学者与熊猫数据帧.我在下面的数据集中缺少A列和B列的值(Test.csv):
DateTime A B
01-01-2017 03:27
01-01-2017 03:28
01-01-2017 03:29 0.18127718 -0.178835737
01-01-2017 03:30 0.186923018 -0.183260853
01-01-2017 03:31
01-01-2017 03:32
01-01-2017 03:33 0.18127718 -0.178835737
Run Code Online (Sandbox Code Playgroud)
我可以使用此代码使用向前传播填充值,但这仅适用于03:31和03:32,而不是03:27和03:28.
import pandas as pd
import numpy as np
df = pd.read_csv('test.csv', index_col = 0)
data = df.fillna(method='ffill')
ndata = data.to_csv('test1.csv')
Run Code Online (Sandbox Code Playgroud)
结果是:
DateTime A B
01-01-2017 03:27
01-01-2017 03:28
01-01-2017 03:29 0.18127718 -0.178835737
01-01-2017 03:30 0.186923018 -0.183260853
01-01-2017 03:31 0.186923018 -0.183260853
01-01-2017 03:32 0.186923018 -0.183260853
01-01-2017 03:33 0.18127718 -0.178835737
Run Code Online (Sandbox Code Playgroud)
我如何使用backfil包含'Bfill'来填补03:27和03:28的缺失值?
给出下面的表结构,其表示乘客乘坐有门传感器上下车的公交路线.并且,有一个人坐在那辆公共汽车上,带有一个包含点数的剪贴板.
CREATE TABLE BusLoad(
ROUTE CHAR(4) NOT NULL,
StopNumber INT NOT NULL,
ONS INT,
OFFS INT,
SPOT_CHECK INT)
go
INSERT BusLoad VALUES('AAAA', 1, 5, 0, null)
INSERT BusLoad VALUES('AAAA', 2, 0, 0, null)
INSERT BusLoad VALUES('AAAA', 3, 2, 1, null)
INSERT BusLoad VALUES('AAAA', 4, 6, 3, 8)
INSERT BusLoad VALUES('AAAA', 5, 1, 0, null)
INSERT BusLoad VALUES('AAAA', 6, 0, 1, 7)
INSERT BusLoad VALUES('AAAA', 7, 0, 3, null)
Run Code Online (Sandbox Code Playgroud)
我想在此表中添加一列"LOAD",用于计算每个站点的负载.
Load =上一次停止加载+当前停止ONS - 如果SPOT_CHECK为空,则当前停止OFFS,否则为LOAD = SPOT_CHECK
预期成绩:
ROUTE StopNumber ONS OFFS …
Run Code Online (Sandbox Code Playgroud) 我有两个数据帧
current_bin.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 16 entries, 0 to 15
Data columns (total 3 columns):
id 16 non-null object
fpd 16 non-null float64
avgSpeedBinID 16 non-null object
dtypes: float64(1), object(2)
Run Code Online (Sandbox Code Playgroud)
current_bin数据框如下所示:
current_bin
id fpd avgSpeedBinID
0 1.1.4.1 2.818623 1
1 1.1.4.10 0.266681 10
2 1.1.4.11 0.250017 11
3 1.1.4.12 0.234749 12
4 1.1.4.13 0.222515 13
5 1.1.4.14 0.216150 14
6 1.1.4.15 0.218368 15
7 1.1.4.16 0.227663 16
8 1.1.4.2 1.475454 2
9 1.1.4.3 0.805842 3
10 1.1.4.4 0.581797 4
11 …
Run Code Online (Sandbox Code Playgroud) 我有 2 个数据帧
df1
B C
A
0 300 6
1 400 7
2 500 8
3 600 9
df2
B C
A
2 433 99
3 555 99
Run Code Online (Sandbox Code Playgroud)
这就是我构建它们的方式:
df1 = pd.DataFrame({'A': [0, 1, 2, 3],
'B': [300, 400, 500, 600],
'C': [6, 7, 8, 9]})
df1.set_index('A', inplace=True)
df2 = pd.DataFrame({'A': [2, 3],
'B': [433, 555],
'C': [99, 99]})
df2.set_index('A', inplace=True)
Run Code Online (Sandbox Code Playgroud)
我想df1
用df2
基于索引的行替换所有行,结果应如下所示:
df_result
B C
A
0 300 6
1 400 7
2 433 99 …
Run Code Online (Sandbox Code Playgroud)