小编Ale*_*der的帖子

将Dataframe列转换为行的Dataframe

我有以下DataFrame:

data = {'year': [2010, 2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012, 2013],
        'store_number': ['1944', '1945', '1946', '1947', '1948', '1949', '1947', '1948', '1949', '1947'],
        'retailer_name': ['Walmart','Walmart', 'CRV', 'CRV', 'CRV', 'Walmart', 'Walmart', 'CRV', 'CRV', 'CRV'],
        'product': ['a', 'b', 'a', 'a', 'b', 'a', 'b', 'a', 'a', 'c'],
        'amount': [5, 5, 8, 6, 1, 5, 10, 6, 12, 11]}

stores = pd.DataFrame(data, columns=['retailer_name', 'store_number', 'year', 'product', 'amount'])
stores.set_index(['retailer_name', 'store_number', 'year', 'product'], inplace=True)

stores.groupby(level=[0, 1, 2, 3]).sum()
Run Code Online (Sandbox Code Playgroud)

我想转换以下Dataframe:

                                         amount
retailer_name store_number year product …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

5
推荐指数
2
解决办法
164
查看次数

Pandas 合并两个没有某些列的 DataFrame

语境

我正在尝试将两个大的 CSV 文件合并在一起。

问题

假设我有一个 Pandas DataFrame,如下所示......

EntityNum    foo   ...
------------------------
1001.01      100
1002.02       50
1003.03      200
Run Code Online (Sandbox Code Playgroud)

还有一个这样的……

EntityNum    a_col    b_col
-----------------------------------
1001.01      alice        7  
1002.02        bob        8
1003.03        777        9
Run Code Online (Sandbox Code Playgroud)

我想像这样加入他们:

EntityNum    foo    a_col
----------------------------
1001.01      100    alice
1002.02       50      bob
1003.03      200      777
Run Code Online (Sandbox Code Playgroud)

所以请记住,我不希望 b_col 出现在最终结果中。II 如何用 Pandas 实现这一点?

使用 SQL,我可能应该这样做:

SELECT t1.*, t2.a_col FROM table_1 as t1
                      LEFT JOIN table_2 as t2
                      ON t1.EntityNum = t2.EntityNum; 
Run Code Online (Sandbox Code Playgroud)

搜索

我知道可以使用合并。这是我尝试过的:

import pandas as pd

df_a = pd.read_csv(path_a, sep=',') …
Run Code Online (Sandbox Code Playgroud)

python sql csv left-join pandas

5
推荐指数
1
解决办法
8720
查看次数

Pandas DataFrame中哪些列是二进制的?

我有一个包含大量列的pandas数据帧,我需要查找哪些列是二进制的(仅值0或1)而不查看数据.应该使用哪个功能?

python numpy pandas

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

Python行主要到列主要顺序向量

有像矩阵一样

ma = [[0.343, 0.351, 0.306], [0.145, 0.368, 0.487]]
Run Code Online (Sandbox Code Playgroud)

我想得到一个像这样的矢量:

[0.343, 0.145, 0.351, 0.368, 0.306, 0.487]
Run Code Online (Sandbox Code Playgroud)

试图得到它,我正在使用numpy,reshape但它不起作用.

a = np.array(ma)
>>> print a.shape
(2, 3)
Run Code Online (Sandbox Code Playgroud)

但我得到:

c = a.reshape(3, 2, order='F')
>>> print c
array([[ 0.343,  0.368],
       [ 0.145,  0.306],
       [ 0.351,  0.487]])
Run Code Online (Sandbox Code Playgroud)

对于任何矩阵大小,最好的方法是什么?我的意思是,例如,如果矩阵不是平方的:

[[0.404, 0.571, 0.025],
 [0.076, 0.694, 0.230],
 [0.606, 0.333, 0.061],
 [0.595, 0.267, 0.138]]
Run Code Online (Sandbox Code Playgroud)

我想得到:

[0.404, 0.076, 0.606, 0.595, 0.571, 0.694, 0.333, 0.267, 0.025, 0.230, 0.061, 0.138]
Run Code Online (Sandbox Code Playgroud)

python numpy row-major-order column-major-order

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

Python编程:需要在分割字符串中的字符之间添加空格

我必须打印出文本的每个第三个字母,末尾有空格,没有空格.除了每个字母之间的空格,我可以做任何事情.

这就是我所拥有的.

line = input('Message? ')                                          
print(line[0]+line[3::3].strip())
Run Code Online (Sandbox Code Playgroud)

python

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

如何在熊猫子图中使线条更粗

我正在使用熊猫在单个图中绘制3个子图。下面的代码完成了此任务。但是,我无法使子图中的数据线变粗。有人知道该怎么做吗?

## setup 3 dataframes
t_index=pd.date_range('1/1/2000', periods=10);
df_1 = DataFrame(np.random.randn(10, 4), index=t_index, columns=['A', 'B', 'C', 'D']);
df_2 = DataFrame(np.random.randn(10, 4), index=t_index, columns=['E', 'F', 'G', 'H']);
df_3 = DataFrame(np.random.randn(10, 4), index=t_index, columns=['I', 'J', 'K', 'L']);

##Setup Figure and add subplots
fig, axes = plt.subplots(3, 1, figsize=(6, 6))
plt.subplots_adjust(wspace=0.5, hspace=0.5);
target1 = axes[0]
target2 = axes[1]
target3 = axes[2]

df_1.plot(ax=target1)
df_2.plot(ax=target2)
df_3.plot(ax=target3)
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

计算Pandas DataFrame的百分比变化

我有以下DataFrame:

                 Value        1lag 
Date                                                                     
2005-04-01  258.682029  214.382786 
2005-05-01  173.253998  258.682029
2005-06-01  244.432029  173.253998
2005-07-01  213.706019  244.432029
2005-08-01  213.670665  213.706019
Run Code Online (Sandbox Code Playgroud)

这些是两个时间序列的绝对值.但是,我不想要那些绝对值,我想要它们的变体,所以它们看起来像这样:

                 Value        1lag 
Date                                                                     
2005-04-01         NaN         NaN 
2005-05-01      0.3302     -0.2066
2005-06-01     -0.4108      0.3302
2005-07-01      0.1257     -0.4108
2005-08-01      0.0002      0.1257
Run Code Online (Sandbox Code Playgroud)

有这么简单的命令吗?如果没有,你的建议是什么?

python dataframe pandas

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

按多个 pandas 数据框中的通用值进行选择

我是熊猫的新手,怀疑这有一个简单的答案,但现在它让我感到困惑。我想从多个数据帧(具有相同的列)中选择行,其中一列中的值出现在所有数据帧中。

所以如果我有以下内容:

import numpy as np
import pandas as pd

df1 = pd.DataFrame({'Col1'['Adams','Baker','Cash','Jones','Thomas'],\
                'Col2': ['A','B','C','D','E'],'Col3':[10,11,12,13,14]})
df2 = pd.DataFrame({'Col1':['Adams','Cash','Fox','Jones','Johnson'],\
               'Col2': ['D','E','F','G','H'],'Col3':[40,50,60,70,80]})
df3 = pd.DataFrame({'Col1': ['Adams','Barns','Jones','Smith','Thomas'],\
               'Col2':['F','G','J','L','M'],'Col3':[21,21,22,23,24]})
print df1
print df2
print df3
Run Code Online (Sandbox Code Playgroud)

给予:

     Col 1   Col2  Col3
0    Adams   A    10
1    Baker   B    11
2    Cash    C    12
3   Jones    D    13
4  Thomas    E    14
  Col1 Col2  Col3
0    Adams    D    40
1     Cash    E    50
2      Fox    F    60
3    Jones    G    70
4  Johnson    H    80
   Col1 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用groupby在大型数据帧上有效地进行Fillna(正向填充)?

在大型数据框中转发填充信息的最有效方法是什么?

我合并了每日文件中约600万行x 50列的维度数据。我删除了重复项,现在有大约200,000行唯一数据,这些数据可以跟踪其中一个维度发生的任何更改。

不幸的是,一些原始数据被弄乱了并且具有空值。如何有效地使用以前的值填充空数据?

id       start_date   end_date    is_current  location  dimensions...
xyz987   2016-03-11   2016-04-02  Expired       CA      lots_of_stuff
xyz987   2016-04-03   2016-04-21  Expired       NaN     lots_of_stuff
xyz987   2016-04-22          NaN  Current       CA      lots_of_stuff
Run Code Online (Sandbox Code Playgroud)

这就是数据的基本形状。问题是某些尺寸不应为空白(这是原始数据中的错误)。一个示例是,对于前一行,该行的位置已填写,但在下一行中为空白。我知道该位置没有更改,但由于它是空白,因此它正在将其捕获为唯一行。

我假设我需要使用ID字段进行分组。这是正确的语法吗?我是否需要列出数据框中的所有列?

cols = [list of all of the columns in the dataframe]
wfm.groupby(['id'])[cols].fillna(method='ffill', inplace=True)
Run Code Online (Sandbox Code Playgroud)

在200,000行数据框中,大约有75,000个唯一ID。我尝试做一个

df.fillna(method='ffill', inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是我需要根据ID进行操作,并且我想确保自己的工作效率尽可能高(我的计算机花了很长时间读取所有这些文件并将其合并到内存中)。

pandas

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

Python pandas没有属性ols - 错误(滚动OLS)

对于我的评估,我想 使用以下脚本运行OLS regression estimation此URL中的数据集滚动1000窗口:https: //drive.google.com/open?id =Python 0B2Iv8dfU4fTUa3dPYW5tejA0bzg.

# /usr/bin/python -tt

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.formula.api import ols

df = pd.read_csv('estimated.csv', names=('x','y'))

model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['y']], 
                               window_type='rolling', window=1000, intercept=True)
df['Y_hat'] = model.y_predict
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的Python脚本时,我收到此错误:AttributeError: module 'pandas.stats' has no attribute 'ols'.这个错误可能来自我正在使用的版本吗?在pandas安装我的Linux节点上有一个版本的0.20.2

python linear-regression python-3.x pandas statsmodels

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