我在它包含的pandas中导入了CSV文件,1列和25000行,我想将此文件转换为新的数据帧样本数据:
1列4行:
ABC
122
678
abc
我想用列表(ABC)的每个元素创建DataFrame作为行列,然后是其他行,如下所示:
A B C
1 2 2
6 7 8
a b c
如何执行此任务,我是编程新手。
答案 0 :(得分:0)
选项1
直接解决方案改变view
:
pd.DataFrame(
df.values.astype(str).view('<U1'), columns=list(df.columns[0])
)
A B C
0 1 2 2
1 6 7 8
2 a b c
请注意,所有结果列现在都是字符串。以下是它在性能方面的表现:
df = pd.concat([df] * 100000, ignore_index=True)
%timeit pd.DataFrame(
df.values.astype(str).view('<U1'), columns=list(df.columns[0])
)
122 ms ± 3.17 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
选项2
使用extractall
+ unstack
:
df.ABC.str.extractall('(.)')[0].unstack().rename(
columns=dict(enumerate('ABC'))
)
match A B C
0 1 2 2
1 6 7 8
2 a b c
选项3
还有一个列表理解:
pd.DataFrame([list(x) for x in df.ABC.astype(str)], columns=list('ABC'))
A B C
0 1 2 2
1 6 7 8
2 a b c
答案 1 :(得分:0)
另一种方式是
In [131]: pd.DataFrame(df.ABC.apply(list).tolist(), columns=list(df.columns[0]))
Out[131]:
A B C
0 1 2 2
1 6 7 8
2 a b c