【发布时间】:2017-09-04 12:54:27
【问题描述】:
我尝试打开一个 .dta 作为 DataFrame。 但是出现了一个错误:“ValueError:列的值标签......不是唯一的。重复的标签是:”后跟在列中出现两次的标签。
我知道在 stata 中用完全相同的值标签标记乘法代码并不聪明(不是我的错 :)) 经过一些研究,我知道,熊猫不会接受重复的值标签(这很聪明)。
但我想不出一个(好的)解决方案: 有没有:
一个。在此过程中使用 pandas 打开数据并仅重命名双打(如“label”为“label(2)”)的流畅方式?
这是数据的样子(括号中的值标签):
| multilabel
1 | 11 (oneone or twotwo)
2 | 22 (oneone or twotwo)
3 | 33 (other-label-which-is-unique)
到目前为止我的代码:
import pandas as pd
#followed by any option that delivers this solution:
dataframe = pd.read_stata('file.dta')
或
b.告诉 stata 的一种快速简单的方法:只需用“label(2)”而不是“label”重命名所有重复的值标签? 是的,到目前为止的代码也很无聊:
use "file.dta"
*followed by a loop wich finds repeated labels and changes them
save "file.dta", replace
是的,有很多重复的值标签可以一一处理。
这里是Stata-Commands来产生一个最小的例子:
set obs 1
generate var1 = 1 in 1
set obs 2
replace var1 = 2 in 2
set obs 3
replace var1 = 3 in 3
generate var2 = 11 in 1
replace var2 = 22 in 2
replace var2 = 33 in 3
rename var2 multilabel
label define labelrepeat 11 "oneone or twotwo" 22 "oneone or twotwo"
label values multilabel labelrepeat
我对每个建议都很满意!
【问题讨论】:
-
我在这里看不到可重现的示例。 stackoverflow.com/help/mcve 提供建议。
-
好吧,你是对的,即使我认为在这种情况下它不会有太大帮助,拥有一个示例数据将为每个人创造更高的质量。对不起。
-
我不是 Pandas 人,这是您最需要帮助的地方,但从 Stata 端,
decode multilabel, gen(valuelabel)后跟label values multilabel将删除您说有问题的重复值标签。
标签: python pandas stata labels