gpt4 book ai didi

python - 使用 python 将具有可变列数的分隔文件加载到数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:49 25 4
gpt4 key购买 nike

我可能会得到列数可变的文本文件。数据可以如下所示。

1,a,x
2,b
3,c,y,z

现在我必须将所有行加载到数据库中,比如 postgres\sql server。表结构如下

Table : test
columns : col1 (nvarchar(max)),col2 (nvarchar(max)),col3 (nvarchar(max))

数据应按如下方式加载

col1   col2   col3
1 a x
2 b Null
3 c y,z

所以这些是加载规则1)如果文件中的列数少于表中的列数,则缺失的列应替换为空值2) 如果文件中的列数大于表中的列数,则所有多余数据应保存在最后一列中。

有人可以建议我完成此任务的最佳方法吗

最佳答案

尝试以下操作,使用 pd.read_fwf 读取文件。

df = pd.read_fwf(filename, delimiter=',', header=None)

现在我们必须将“col3”之后的所有列连接到 col3:

df.iloc[:,2] = df.iloc[:,2:].astype(str).apply(tuple, axis=1).str.join(',').str.replace(',nan', '')

df = df.iloc[:,:3]
df.columns = ['col1', 'col2', 'col3']

Example

文件名中的数据:

1,a,x
2,b
3,c,y,z
4,d,s,f,d,s

使用pd.read_fwf读取文件时的Df:

    0   1   2   3   4   5
0 1 a x NaN NaN NaN
1 2 b NaN NaN NaN NaN
2 3 c y z NaN NaN
3 4 d s f d s

上述操作后输出:

   col1  col2   col3
0 1 a x
1 2 b nan
2 3 c y,z
3 4 d s,f,d,s

关于python - 使用 python 将具有可变列数的分隔文件加载到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com