Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分隔/拆分行值并形成单独的行_Python_Delimiter_Reshape - Fatal编程技术网

Python 分隔/拆分行值并形成单独的行

Python 分隔/拆分行值并形成单独的行,python,delimiter,reshape,Python,Delimiter,Reshape,数据的可复制代码: import pandas as pd dict = {"a": "[1,2,3,4]", "b": "[1,2,3,4]"} dict = pd.DataFrame(list(dict.items())) dict 0 1 0 a [1,2,3,4] 1 b [1,2,3,4] 我想拆分/分隔“第1列”,并为每个拆分值创建单独的行 预期产出: 0 1 0 a 1 1 a 2 2 a 3

数据的可复制代码:

import pandas as pd
dict = {"a": "[1,2,3,4]", "b": "[1,2,3,4]"}
dict = pd.DataFrame(list(dict.items()))

dict

    0   1
 0  a   [1,2,3,4]
 1  b   [1,2,3,4]
我想拆分/分隔“第1列”,并为每个拆分值创建单独的行

预期产出:

     0    1
  0  a    1
  1  a    2
  2  a    3
  3  a    4
  4  b    1
  5  b    2
  6  b    3
  7  b    4
我应该先删除括号,然后拆分值吗?我真的不知道该怎么做。请提供任何有助于我解决此问题的参考资料?

基于以下逻辑:


由于单元格中有包含列表(而非列表)的字符串,因此可以使用
eval

dict_v = {"a": "[1,2,3,4]", "b": "[1,2,3,4]"}
df = pd.DataFrame(list(dict_v.items()))
df = (df.rename(columns={0:'l'}).set_index('l')[1]
          .apply(lambda x: pd.Series(eval(x))).stack()
           .reset_index().drop('level_1',1).rename(columns={'l':0,0:1}))
或者另一种方法是创建
数据帧
(可能更快),例如:

您的输出是

   0  1
0  a  1
1  a  2
2  a  3
3  a  4
4  b  1
5  b  2
6  b  3
7  b  4

所有的重命名都是为了准确地获得您的输入/输出

可能的重复,可能的重复感谢Kopytok,这个解决方案也起了作用。我觉得另一个更容易理解和解释。再次感谢您提供的解决方案:)
df = (pd.DataFrame(df[1].apply(eval).tolist(),index=df[0])
          .stack().reset_index(level=1, drop=True)
            .reset_index(name='1'))
   0  1
0  a  1
1  a  2
2  a  3
3  a  4
4  b  1
5  b  2
6  b  3
7  b  4