【问题标题】:Python transforms 0 to 0.693147180559945Python 将 0 转换为 0.693147180559945
【发布时间】:2020-07-07 16:35:36
【问题描述】:

我在 R 中创建了一个数据框,其中有一列包含虚拟变量(因此为 1 或 0)并将其保存到文件中

write.table(my_df,"my_df.txt",sep=" ", eol="\r\n", row.names=FALSE)

然后,我将文件读入 Python 使用

with open('./my_df.txt', 'r') as myfile:
    my_df = myfile.read().splitlines()

最后,我想对包含虚拟变量的列做一些事情:

header = my_df[0].split(' ')
body = my_df[1:]
for i,j in enumerate(header):
    if j == '"dummy_variable_column"':
        column_index = i
dummies = [row.split(' ')[column_index].replace('"', '') for row in body]

这是我经常使用的一种方法。但是,在这种特定情况下,保留问题列的变量dummies 中的一些值是0.693147180559945。我无法向自己解释这一点,变量中应该只有 0 和 1。有人知道发生了什么吗?

*第二次编辑(因为 cmets)

这是print(my_df[:20])的输出

"subject" "session" "trial" "age" "gender" "dummy_variable_column"
"s1" 1 2 19 "female" 0
"s1" 1 4 19 "female" 0
"s1" 1 11 19 "female" 0
"s1" 1 14 19 "female" 1
"s1" 1 15 19 "female" 0
"s1" 1 16 19 "female" 0
"s1" 1 17 19 "female" 1
"s1" 1 21 19 "female" 0
"s1" 1 24 19 "female" 0
"s1" 1 26 19 "female" 0
"s1" 1 39 19 "female" 0
"s1" 1 40 19 "female" 0
"s1" 1 41 19 "female" 1
"s1" 1 45 19 "female" 0
"s1" 1 48 19 "female" 0
"s1" 1 49 19 "female" 0
"s1" 1 50 19 "female" 0
"s1" 1 59 19 "female" 1
"s1" 1 61 19 "female" 0

但是,print(my_df[37045]) 确实会产生

"s20" 1 26 19 "male" 0.693147180559945

此外,我想指出,在 R 中,在命令 unique(my_df$dummy_variable_column) 之后给出以下输出:0 1

*因为 cmets 而第三次编辑

这就是我使用我的专栏的方式:

header = my_df[0].split(' ')
body = my_df[1:]
for i,j in enumerate(header):
    if j == '"dummy_variable_column"':
        dummy_index = i
dummies = [item.split(' ')[dummy_index] for item in my_df]

例如print(dummies[37044]) 输出0.693147180559945

【问题讨论】:

  • my_df.txt 看起来像什么? text 是如何变成my_df 的?
  • 对不起,我的错。该文件被读入 my_df。这个问题现在是最新的
  • 您展示的 Python 代码中除了使用字符串外,没有任何功能。要么有你没有显示的代码,要么文件中有一个小数值。
  • 你能给我们my_df,即minimal reproducible example吗?如果您目视检查文本文件,您会看到什么?
  • 如果有帮助,该值是 2 的自然对数:print(log(2),digits=22)

标签: python r binary dummy-variable


【解决方案1】:

原来R数据框中有一列,由're + ba'等值组成。由于空间的原因,列表理解dummies = [item.split(' ')[dummy_index] for item in my_df](第 3 次编辑)中的空格拆分确实无法从正确的列中获取值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2015-07-01
    • 1970-01-01
    • 2023-03-29
    • 2017-01-10
    • 2013-07-06
    相关资源
    最近更新 更多