小编big*_*bug的帖子

如何设置pandas数据帧数据左/右对齐?

pd.set_option("display.colheader_justify","right")用来设置列标题.但我无法找到数据选项pd.describe_option().

如何设置数据框内的数据显示每列的左对齐或右对齐?或者,是否可以为整个行数据显示定义格式模板?

python pandas

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

如何在python中将str转换为单个元素列表

我有一个str变量:str,我想将它转换为单个元素列表,我试试这个:

>>> list(var_1)
['h', 'e', 'l', 'l', 'o']
Run Code Online (Sandbox Code Playgroud)

这不是var_1 = "hello"我想要的.

我怎么做?

python

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

如何将pandas列的值除以另一列

我有一个数据帧:

>>> dt
                   COL000   COL001   QT
STK_ID  RPT_Date                       
STK000  20120331   2.6151   2.1467    1
        20120630   4.0589   2.3442    2
        20120930   4.4547   3.9204    3
        20121231   4.1360   3.8559    4
STK001  20120331  -0.2178   0.9184    1
        20120630  -1.9639   0.7900    2
        20120930  -2.9147   1.0189    3
        20121231  -2.5648   2.3743    4
STK002  20120331  -0.6426   0.9543    1
        20120630  -0.3575   1.6085    2
        20120930  -2.3549   0.7174    3
        20121231  -3.4860   1.6324    4
Run Code Online (Sandbox Code Playgroud)

我希望列值除以'QT'列,有点像这样:

dt =  dt/dt.QT     # pandas does not accept this syntax
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

STK_ID  RPT_Date        COL000       COL001  QT
STK000  20120331   2.615110188  2.146655745 …
Run Code Online (Sandbox Code Playgroud)

division pandas

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

如何重新排列Pandas列序列?

>>> df =DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})
>>> df['x']=df.a + df.b
>>> df['y']=df.a - df.b
>>> df
   a  b   x  y
0  1  2   3 -1
1  2  4   6 -2
2  3  6   9 -3
3  4  8  12 -4
Run Code Online (Sandbox Code Playgroud)

现在我想重新排列列序列,这使得'x','y'列成为第一列和第二列:

>>> df = df[['x','y','a','b']]
>>> df
    x  y  a  b
0   3 -1  1  2
1   6 -2  2  4
2   9 -3  3  6
3  12 -4  4  8
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个很长的'a','b','c','d'.....,我不想明确地列出列.我怎样才能做到这一点 ?

或者Pandas是否提供了这样的功能set_column_sequence(dataframe,col_name, seq),我可以这样做: set_column_sequence(df,'x',0)set_column_sequence(df,'y',1)

python pandas

18
推荐指数
4
解决办法
6万
查看次数

如何更改Pandas数据帧索引值?

我有一个df:

>>> df
                   sales     cash
STK_ID RPT_Date                  
000568 20120930   80.093   57.488
000596 20120930   32.585   26.177
000799 20120930   14.784    8.157
Run Code Online (Sandbox Code Playgroud)

并希望将第一行的索引值更改('000568','20120930')('000999','20121231').最终结果将是:

>>> df
                   sales     cash
STK_ID RPT_Date                  
000999 20121231   80.093   57.488
000596 20120930   32.585   26.177
000799 20120930   14.784    8.157
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

python pandas

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

如何删除Pandas系列重复索引的额外副本?

我有一个s重复索引系列:

>>> s
STK_ID  RPT_Date
600809  20061231    demo_str
        20070331    demo_str
        20070630    demo_str
        20070930    demo_str
        20071231    demo_str
        20060331    demo_str
        20060630    demo_str
        20060930    demo_str
        20061231    demo_str
        20070331    demo_str
        20070630    demo_str
Name: STK_Name, Length: 11
Run Code Online (Sandbox Code Playgroud)

我只想通过以下方式保留唯一行和重复行的一个副本:

s[s.index.unique()]
Run Code Online (Sandbox Code Playgroud)

Pandas 0.10.1.dev-f7f7e13 给出以下错误消息

>>> s[s.index.unique()]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "d:\Python27\lib\site-packages\pandas\core\series.py", line 515, in __getitem__
    return self._get_with(key)
  File "d:\Python27\lib\site-packages\pandas\core\series.py", line 558, in _get_with
    return self.reindex(key)
  File "d:\Python27\lib\site-packages\pandas\core\series.py", line 2361, in reindex
    level=level, limit=limit)
  File "d:\Python27\lib\site-packages\pandas\core\index.py", line 2063, …
Run Code Online (Sandbox Code Playgroud)

python pandas

15
推荐指数
3
解决办法
8994
查看次数

如何在matplotlib两个y轴图表中对齐条形和线条?

我有一个熊猫df如下:

>>> df
                   sales  net_pft  sales_gr  net_pft_gr
STK_ID RPT_Date                                        
600809 20120331  22.1401   4.9253    0.1824     -0.0268
       20120630  38.1565   7.8684    0.3181      0.1947
       20120930  52.5098  12.4338    0.4735      0.7573
       20121231  64.7876  13.2731    0.4435      0.7005
       20130331  27.9517   7.5182    0.2625      0.5264
       20130630  40.6460   9.8572    0.0652      0.2528
       20130930  53.0501  11.8605    0.0103     -0.0461
Run Code Online (Sandbox Code Playgroud)

然后df[['sales','net_pft']].unstack('STK_ID').plot(kind='bar', use_index=True)创建条形图.

df[['sales_gr','net_pft_gr']].plot(kind='line', use_index=True)创建折线图:

现在我想使用twinx()将它们放在两个y轴的图表中.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = df[['sales','net_pft']].unstack('STK_ID').plot(kind='bar', use_index=True)
ax2 = ax.twinx()
ax2.plot(df[['sales_gr','net_pft_gr']].values, linestyle='-', marker='o', linewidth=2.0)
Run Code Online (Sandbox Code Playgroud)

结果是这样的: 在此输入图像描述

我的问题是:

  • 如何在相同的x-tickers上移动线条与杆对齐?
  • 如何让左右y_axis代码在同一行对齐?

python matplotlib pandas

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

如何用pythonic方式填充Pandas数据帧的缺失记录?

我有一个像这样的Pandas数据帧'df':

         X   Y  
IX1 IX2
A   A1  20  30
    A2  20  30
    A5  20  30
B   B2  20  30
    B4  20  30
Run Code Online (Sandbox Code Playgroud)

它失去了一些行,我想填补中间的空白,如下所示:

         X   Y  
IX1 IX2
A   A1  20  30
    A2  20  30
    A3  NaN NaN
    A4  NaN NaN
    A5  20  30
B   B2  20  30
    B3  NaN NaN
    B4  20  30
Run Code Online (Sandbox Code Playgroud)

有没有pythonic方式来做到这一点?

python pandas

12
推荐指数
1
解决办法
4373
查看次数

如何在Pandas中创建lazy_evaluated数据帧列

很多时候,我有一个大数据框df来保存基本数据,并且需要创建更多列来保存由基本数据列计算的衍生数据.

我可以在Pandas中这样做:

df['derivative_col1'] = df['basic_col1'] + df['basic_col2']
df['derivative_col2'] = df['basic_col1'] * df['basic_col2']
....
df['derivative_coln'] = func(list_of_basic_cols)
Run Code Online (Sandbox Code Playgroud)

Pandas将同时为所有派生列计算和分配内存.

我现在想要的是有一个懒惰的评估机制来推迟派生列的计算和内存分配到实际需要的时刻.有点将lazy_eval_columns定义为:

df['derivative_col1'] = pandas.lazy_eval(df['basic_col1'] + df['basic_col2'])
df['derivative_col2'] = pandas.lazy_eval(df['basic_col1'] * df['basic_col2'])
Run Code Online (Sandbox Code Playgroud)

这将节省像df['derivative_col2']Python'yield '生成器那样的时间/内存,因为如果我发出命令只会分解特定的计算和内存分配.

lazy_eval()熊猫怎么办?任何提示/思考/参考都是受欢迎的.

python lazy-evaluation pandas

12
推荐指数
2
解决办法
3621
查看次数

如何将Pandas DatetimeIndex相应地转换为字符串

我定义了一个DatetimeIndex如下.

>>> date_rng = pandas.date_range('20060101','20121231',freq='D')

>>> type(date_rng)
<class 'pandas.tseries.index.DatetimeIndex'>
>>> date_rng[0]
<Timestamp: 2006-01-01 00:00:00>
Run Code Online (Sandbox Code Playgroud)

'date_rng'中的每个元素都是'Timestamp',如何将其转换为如下所示的字符串系列?

>>> pandas.Series(['2006-01-01','2006-01-02','2006-01-03'])
0    2006-01-01
1    2006-01-02
2    2006-01-03
Run Code Online (Sandbox Code Playgroud)

python pandas

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

标签 统计

pandas ×9

python ×9

division ×1

lazy-evaluation ×1

matplotlib ×1