我有一个如下所示的Pandas数据框(带有两行示例):
import re
reg = re.compile(r'(?<=[0-9]\s[A-Z]\s)[0-9\-\s]+')
text = """
unimportant information--------
unimportant information--------
-blank line
1 F -1 2 -3 4 5 6 7 (more columns of ints)
2 L 3 -1 3 4 0 -2 1 (more columns of ints)
3 A 3 -1 3 6 0 -2 5 (more columns of ints)"""
ignore_start = 5 # 0,1,2,3 = 4
expected_array = []
for index, line in enumerate(text.splitlines()):
if(index >= ignore_start):
if reg.search(line):
result = reg.search(line).group(0).strip()
# Use Result
expected_array.append(' '.join(result))
print(expected_array)
# Result: [
#'- 1 2 - 3 4 5 6 7',
#'3 - 1 3 4 0 - 2 1',
#'3 - 1 3 6 0 - 2 5'
#]
我需要将所有内容分解为单个标量列,如下所示:
cadd_scores_vec freqs_vec CLASS
0 [0.001, -4.053424] (0.0, 0.0, 0.0) 0
1 [0.001, -3.654581] (0.0, 0.0, 0.0) 0
我不太在乎新的列名;重要的是如上所述将行排列成简单的向量。
我该如何实现?
答案 0 :(得分:1)
使用pd.concat
的两种方法:
pd.concat([pd.DataFrame(df[col].values.tolist()) for col in df.columns], axis=1, ignore_index=True)
或
pd.concat([df[col].apply(pd.Series) for col in df.columns], axis=1, ignore_index=True)
ignore_index=True
仅确保您没有重复的列名。