用 python 分隔多个子列中的标签值
separate values of labels in multiple sub columns with python
我有一个类似波纹管的 CSV 数据集
f1 f2 f3 ... label1 label2
float float float ... 00010 00001
... 01000 00010
每个标签列都是二进制格式。我想在保留标题的情况下将一列更改为多列。每个零和一个应该分开并放在单独的列中,如下所示
f1 f2 f3 ... label1 label2
float float float ... 0,0,0,1,0 0,0,0,0,1
... 0,1,0,0,0 0,0,0,1,0
你能指导我如何在 Python 中做到这一点吗?
谢谢。
您可以像这样使用 pandas dataframe
非常有效地做到这一点:
(注意:还有其他方法,例如读取 csv 并编辑每一行)。
import pandas as pd
# some test data using strings for their binary equivalents.
example_data = {'f':['a', 'b', 'c'], 'binary_data':['111','101','001']}
df = pd.DataFrame(example_data)
print(df)
def split_parts(row):
return [x for x in row['binary_data']]
df['split_data']=df.apply(split_parts, axis=1)
print(df)
print(type(df['split_data']))
这是“示例”输入:
f binarydata
0 a 111
1 b 101
2 c 100
这是结果:
f binary_data split_data
0 a 111 [1, 1, 1]
1 b 101 [1, 0, 1]
2 c 001 [0, 0, 1]
上面的 split_data
列是一个字符串列表,每个值代表二进制数据的每个部分。
我有一个类似波纹管的 CSV 数据集
f1 f2 f3 ... label1 label2
float float float ... 00010 00001
... 01000 00010
每个标签列都是二进制格式。我想在保留标题的情况下将一列更改为多列。每个零和一个应该分开并放在单独的列中,如下所示
f1 f2 f3 ... label1 label2
float float float ... 0,0,0,1,0 0,0,0,0,1
... 0,1,0,0,0 0,0,0,1,0
你能指导我如何在 Python 中做到这一点吗? 谢谢。
您可以像这样使用 pandas dataframe
非常有效地做到这一点:
(注意:还有其他方法,例如读取 csv 并编辑每一行)。
import pandas as pd
# some test data using strings for their binary equivalents.
example_data = {'f':['a', 'b', 'c'], 'binary_data':['111','101','001']}
df = pd.DataFrame(example_data)
print(df)
def split_parts(row):
return [x for x in row['binary_data']]
df['split_data']=df.apply(split_parts, axis=1)
print(df)
print(type(df['split_data']))
这是“示例”输入:
f binarydata
0 a 111
1 b 101
2 c 100
这是结果:
f binary_data split_data
0 a 111 [1, 1, 1]
1 b 101 [1, 0, 1]
2 c 001 [0, 0, 1]
上面的 split_data
列是一个字符串列表,每个值代表二进制数据的每个部分。