我pd.set_option("display.colheader_justify","right")用来设置列标题.但我无法找到数据选项pd.describe_option().
如何设置数据框内的数据显示每列的左对齐或右对齐?或者,是否可以为整个行数据显示定义格式模板?
我有一个str变量:str,我想将它转换为单个元素列表,我试试这个:
>>> list(var_1)
['h', 'e', 'l', 'l', 'o']
Run Code Online (Sandbox Code Playgroud)
这不是var_1 = "hello"我想要的.
我怎么做?
我有一个数据帧:
>>> 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) >>> 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)?
我有一个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)
怎么做到这一点?
我有一个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) 我有一个熊猫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)
结果是这样的:

我的问题是:
我有一个像这样的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方式来做到这一点?
很多时候,我有一个大数据框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()熊猫怎么办?任何提示/思考/参考都是受欢迎的.
我定义了一个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)