Python 将 0 转换为 0.693147180559945
Python transforms 0 to 0.693147180559945
我在 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。有人知道发生了什么事吗?
*第二次编辑(因为评论)
这是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
*第三次编辑因为评论
这是我处理专栏的方式:
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
原来R dataframe中有一列,由're + ba'
等值组成。由于 space,列表理解 dummies = [item.split(' ')[dummy_index] for item in my_df]
(第 3 次编辑)中 space 的拆分确实无法从正确的列中获取值。
我在 R 中创建了一个数据框,其中有一列包含虚拟变量(因此为 1 或 0)并使用
将其保存到文件中write.table(my_df,"my_df.txt",sep=" ", eol="\r\n", row.names=FALSE)
然后,我使用
将文件读入Pythonwith 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。有人知道发生了什么事吗?
*第二次编辑(因为评论)
这是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
*第三次编辑因为评论
这是我处理专栏的方式:
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
原来R dataframe中有一列,由're + ba'
等值组成。由于 space,列表理解 dummies = [item.split(' ')[dummy_index] for item in my_df]
(第 3 次编辑)中 space 的拆分确实无法从正确的列中获取值。