小编spl*_*ter的帖子

在 Pandas 中使用 multiIndexing 时显示所有索引值

我希望在查看我的 DataFrame 时,我将看到 multiIndex 的所有值,包括当后续行对其中一个级别具有相同的索引时。下面是一个例子:

arrays = [['20', '50', '20', '20'],['N/A', 'N/A', '10', '30']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['Jim', 'Betty'])
pd.DataFrame([np.random.rand(1)]*4,index=index)
Run Code Online (Sandbox Code Playgroud)

输出是:

                                0
Jim         Betty           
20          N/A          0.954973
50          N/A          0.954973
20          10           0.954973
            30           0.954973
Run Code Online (Sandbox Code Playgroud)

我想在西南角也有一个 20。也就是说,我希望我的 DataFrame 是:

                                0
Jim         Betty           
20          N/A          0.954973
50          N/A          0.954973
20          10           0.954973
20          30           0.954973
Run Code Online (Sandbox Code Playgroud)

Pandas 有能力做到这一点吗?

python multi-index python-3.x pandas

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

观星者产生各种乳胶错误

我正在使用stargazerrto输出回归结果latex。当我在 Latex 中运行输出时,我看到了结果,但得到了很多Package array errors。这是我的代码。在 RI 中使用stargazer如下:

stargazer(fe1, fe2, fe3,
               title="Between regression",
               align=TRUE, 
               df = FALSE, 
               dep.var.labels=c('depLabel'), 
               covariate.labels = c('1st', '2nd', '3rd', '4th') )
Run Code Online (Sandbox Code Playgroud)

这会产生许多错误latex,如下所示:

Package array Error: Illegal pream-token (D): `c' used. ...5pt}}lD{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} }
Package array Error: Illegal pream-token (.): `c' used. ...5pt}}lD{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} }
Package array Error: Illegal pream-token (-3): `c' used. ...5pt}}lD{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} }
Run Code Online (Sandbox Code Playgroud)

还有很多Missing $ inserted错误。也许我需要在我的乳胶序言中添加任何包?或者任何其他常见的解决方法?

编辑 这里是最后行 …

file-io latex r dataframe stargazer

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

使用fillna在Pandas中用列表填充空值

给定一个pd.Series,我想用一个列表替换空值。也就是说,给定:

import numpy as np
import pandas as pd
ser = pd.Series([0,1,np.nan])
Run Code Online (Sandbox Code Playgroud)

我想要一个可以返回的函数

0        0
1        1
2    [nan]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用自然函数,即fillna

result = ser.fillna([np.nan])
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

TypeError:“值”参数必须是标量或字典,但您传递了“列表”

有什么简单的方法可以达到这个目的吗?

series missing-data python-3.x pandas fillna

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

不能使海边小提琴情节水平[Python3.X]

使用Seaborn,我可以创建一个.使其垂直是没有问题的.但我想要一个水平的小提琴情节.我看到建议violinplot函数中传递参数时只需切换x和y .

我希望获得相同的小提琴曲线,旋转90度,并且只能通过切换x和y来实现这一点.这是一个简单的例子:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
categories = pd.Series(['2008', '2008', '2008', '2009', '2009' ])
values     = pd.Series(np.random.normal(0,1, 5))
sns.violinplot( x=categories, y=values, linewidth=5)
plt.show()
sns.violinplot( y=categories, x=values, linewidth=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这两张图.第一个是垂直小提琴情节,这是预期的.但第二个不是类似的水平小提琴情节.调用第二个绘图的命令出了什么问题?

在此输入图像描述

matplotlib python-3.x pandas seaborn violin-plot

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

在pandas DataFrame中将数字转换为特定的字符串格式

我需要运行一个可以通过循环完成的任务,但我想有一个更有效和漂亮的方法来做到这一点.我有一个DataFrame整数列,我想将其转换为4位数字符串表示.也就是说,3应该转换为'0003',234应该转换为'0234'.我正在寻找一个向量操作,它将立即对列中的所有条目执行此操作,快速使用简单的代码.

python string-formatting dataframe python-3.x pandas

3
推荐指数
2
解决办法
1918
查看次数

在熊猫中有效使用替换

我希望replace在python3中以有效的方式使用该功能。我拥有的代码可以完成任务,但是由于我正在处理大型数据集,所以代码太慢了。因此,只要有折衷,我的工作重点就是效率而不是优雅。这是我想做的玩具:

import pandas as pd
df = pd.DataFrame([[1,2],[3,4],[5,6]], columns = ['1st', '2nd'])

       1st  2nd
   0    1    2
   1    3    4
   2    5    6


idxDict= dict()
idxDict[1] = 'a'
idxDict[3] = 'b'
idxDict[5] = 'c'

for k,v in idxDict.items():
    df ['1st'] = df ['1st'].replace(k, v)
Run Code Online (Sandbox Code Playgroud)

这使

     1st  2nd
   0   a    2
   1   b    4
   2   c    6
Run Code Online (Sandbox Code Playgroud)

如我所愿,但是花费的时间太长。最快的方法是什么?

编辑:这是比问题更集中和明确的问题,其解决方案与此类似。

python indexing series dataframe pandas

3
推荐指数
2
解决办法
3114
查看次数

大熊猫DataFrame中的自定义浮动格式

我有一个DataFrame

   0       1
0  3.000   5.600
1  1.200   3.456
Run Code Online (Sandbox Code Playgroud)

为了演示的目的,我希望将其转换为

   0    1
0  3    5.6
1  1.2  3.456
Run Code Online (Sandbox Code Playgroud)

什么是达到此目的的优雅方法(不会在的条目上无效循环DataFrame)?

或许更笼统地说:是否有一种方法可以设置pandas为始终这样做?例如pandas选项之一?

请注意,这pd.options.display.float_format = '{:,.0f}'.format将不起作用,因为它会给出固定的小数位数,而不是DataFrame像我上面指出的那样在各条目之间有所不同。

python formatting dataframe python-3.x pandas

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

具有多列的定制表

我正在使用社区提供的命令estout将自定义表从Stata输出到乳胶.tex文件。但是,我不知道如何在一个表中添加多个列。

下面是一个简化的示例,其中我创建了两个单独的表,每个表包含来自两个不同回归的残差的标准偏差:

reg y x1
predict res1, residual
reg y x2
predict res2, residual
reg y x3
predict res3, residual
reg y x4
predict res4, residual

eststo clear
estpost summarize res1 res2
eststo
esttab, cells("sd") noobs nonum
esttab using first.tex, cells("sd") noobs nonum replace

eststo clear
estpost summarize res3 res4
eststo
esttab, cells("sd") noobs nonum
esttab using second.tex, cells("sd") noobs nonum replace
Run Code Online (Sandbox Code Playgroud)

但是,我想将两列放在同一表中,如下所示:

sd(res1)   sd(res3)
sd(res2)   sd(res4)
Run Code Online (Sandbox Code Playgroud)

Stata 14能够自定义这样的表格吗?


这个问题与这个问题的不同之处在于,我一直在寻找创建定制表的命令。答案是estpost。现在,我要求以一种我在其文档中找不到的方式自定义此命令。

latex stata

3
推荐指数
1
解决办法
177
查看次数

将Pandas Dataframe行中的所有值相乘

这基本上是数据帧:

      col1    col2    col3    label
row1   1       0       1        1
row2   0       0       0        1
row3   1       1       1        0
row4   1       2       1        0
Run Code Online (Sandbox Code Playgroud)

我基本上需要它遍历每一行,如果label = 0,则将行中的所有值乘以-1.

我尝试了很多不同的方法,包括:

df.ix[3] = df.ix[3].multiply(-1)
Run Code Online (Sandbox Code Playgroud)

哪个回报:

SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值.尝试使用.loc [row_indexer,col_indexer] = value

我也尝试删除行和替换,这不起作用,因为索引更改.

python numpy dataframe pandas

3
推荐指数
2
解决办法
1651
查看次数

如何使用选择性正则表达式在熊猫系列中执行替换?

我想在应用pandas.Series.str.replace时使用正则表达式.我知道它需要正则表达式,但我的输出不是预期的.这是一个简单的例子.假设我有

ser = pd.Series(['asd3', 'qwe3', 'asd4', 'zxc'])
Run Code Online (Sandbox Code Playgroud)

我想打开'asd3''asd4'进入'asd'.也就是说,只需删除末尾的任何整数.我正在使用代码:

ser.str.replace('asd([0-9])','')
Run Code Online (Sandbox Code Playgroud)

Bote,我正在使用([0-9])符号,我解释说:对于该系列的任何元素,如果它看起来像'asd([0-9])',然后[0-9]用``(即删除它)替换.但我得到的是

0    
1  qwe3
2    
3  zxc
Run Code Online (Sandbox Code Playgroud)

而我想得到的是:

0  asd
1  qwe3
2  asd
3  zxc
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子,我的正则表达式字符串比这更丑陋,但我希望这表达了我打算做的事情.

regex string series python-3.x pandas

3
推荐指数
1
解决办法
505
查看次数