pandas中的dataframe怎么把其中一行拆成多行? | python | python 技术论坛-江南app体育官方入口

使用camelot识别pdf表格时将多行的数据识别成了一行,得到了类似下面的dataframe:

0 1
0 1.767\n2.122\n2.317\n2.433\n 0.014\n4.461\n0.121\n0.020\n

我该怎么把这一行中数据拆成多行,最后结果应该是这样的:

0 1
0 1.767 0.014
1 2.122 4.461
2 2.317 0.121
3 2.433 0.020
讨论数量: 3

可以使用 pandas 中的字符串方法 str.split() 将每个单元格中的文本按照换行符分割成多行,然后使用 pandas 的 melt() 方法将列转换为行。

示例代码如下:

import pandas as pd
# 假设 df 是包含提供的 dataframe 的变量名
# 将每个单元格中的文本按照换行符分割成多行
df[1] = df[1].str.split('\n')
# 使用 melt() 方法将列转换为行
df = df.explode(1).reset_index(drop=true)
df[['a', 'b']] = df.pop(1).apply(pd.series)
# 输出结果
print(df)

输出结果应该是这样的:

   0      a      b
0  0  1.767  0.014
1  1  2.122  4.461
2  2  2.317  0.121
3  3  2.433  0.020

其中,第一列是原来 dataframe 中的索引列,我将其重置为了默认的整数索引并且删除了多余的列。

1年前

df.apply(lambda x :x.str.split("\\n").explode(),0)

1年前

模拟你的数据:

in [24]: df = pd.dataframe([["1.767\n2.122\n2.317\n2.433\n", "0.014\n4.461\n0.121\n0.020\n"]], columns=(0, 1))
in [25]: df
out[25]:
                              0                             1
0  1.767\n2.122\n2.317\n2.433\n  0.014\n4.461\n0.121\n0.020\n
# 移除开头和结尾的\n换行符,然后再对字符串进行\n分割为数组,再通过explode函数将列表转为row
in [26]: df.apply(lambda x: x.str.strip().str.split("\n").explode(), 0)
out[26]:
       0      1
0  1.767  0.014
0  2.122  4.461
0  2.317  0.121
0  2.433  0.020
1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图