首页 > 解决方案 > 将特定行从一列移到下一列

问题描述

我有一个 X 列,我想在其他列中拆分特定行。

x
76.25
'87.12'
1
345.65
'96.45'
2
78.12
'85.23'
3
35.1
'65.21'
1

我想将所有带有 '' 的值转移到新的 Y 列,并将所有整数转移到新的列序列。请注意,所有值都是文本。所需的输出是

x              y      sequence
76.25       '87.12'     1
345.65      '96.45'     2
78.12       '85.23'     3
35.1        '65.21'     1

我有数百行。我阅读了关于 shift() 将值移动到下一列的信息,但在这种情况下,我不知道行位置,因为有数百行。是否可以使用此标准移动特定值?任何帮助将不胜感激。

标签: pandaspostgresql

解决方案


如果数据是规则的并且每个三元组都存在,您可以将值转换为 numpy 数组并重塑,然后传递给DataFrame构造函数:

df1 = pd.DataFrame(df['x'].to_numpy().reshape(-1,3), columns=['x','y','seq'])
#oldier pandas versions
#df1 = pd.DataFrame(df['x'].values.reshape(-1,3), columns=['x','y','seq'])
print (df1)
        x        y seq
0   76.25  '87.12'   1
1  345.65  '96.45'   2
2   78.12  '85.23'   3
3    35.1  '65.21'   1

推荐阅读