应用T-SQL语言,如何将一列的只分成两列显示,这样的语句怎么写呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用T-SQL语言,如何将一列的只分成两列显示,这样的语句怎么写呢?相关的知识,希望对你有一定的参考价值。

参考技术A 什么意思?是说两列重复显示同样的值吗?那就在T-Sql里select里写两次相同字段就行了,select column01,column01 from table追问

不是,如果是需要将一个字段分成两部分分别显示在两列这样的,有这样的语句可以实现的么?

追答

什么意思?拆分吗?那用substring拆

追问

字段数量分成两部分

追答

拜托,你举例说明一下,原来什么样,然后要拆成什么样

参考技术B 怎么分成两部分,字段分成两部分还是把字段数量分成两部分显示?说清楚一点。追问

字段数量分成两部分

追答

字段的值是于其他字段想关联的。怎么能乱拆的了。比如 tables 表 字段:
a b c d
1 2 3 4
5 6 7 8
9 10 11 12
如果你要拆B字段的值。但B的2 6 10 是和本行其他值有关联的。你具体需要怎么拆呢。写个表,弄原表和拆后的效果看看

追问

我没有具体的想要拆成什么样,就是想知道有哪几种拆分情况。就比如你的这个例子吧,能够有哪几种拆法呢?谢谢~~~

追答

这个,还真没办法说,一半没你说的这种情况。还有就是,一般列数据和其他列都是有关联的。一列数据的一个字段和同行其他字段组成一条数据,所以你说要拆的话还摸不着头脑。
我觉得有一种拆字段,如下面
a b c d
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
如果按数量拆分的话,就i拆成
a b c d
1 2 3 4
5 6 7 8

a b c d
9 10 11 12
13 14 15 16
这样整体拆成两部分显示。
还有就是将字段值的内部拆分。例如
a b c d
9 10 11 12
13 14 15 16
拆分C字段,按拆分字段值来拆分,效果:
a b c e d
9 10 1 1 12
13 14 1 5 16
就是将C列,每个值按字符串,拆分成两半,形成两列,C列和E列。
其他的拆分应该还有,但是不同想法可以有不同的拆分情况。这就具体看你想要如何拆分了

本回答被提问者采纳

熊猫将一列映射到两列的组合

【中文标题】熊猫将一列映射到两列的组合【英文标题】:pandas map one column to the combination of two columns 【发布时间】:2019-05-19 09:00:15 【问题描述】:

我正在使用一个看起来像这样的DataFrame

List    Numb    Name
1       1       one
1       2       two
2       3       three
4       4       four
3       5       five

我正在尝试计算以下输出。

List    Numb    Name
one     1       one
one     2       two
two     3       three
four    4       four
three   5       five

在我目前的方法中,我尝试遍历列,然后用第三列的内容替换值。

例如,如果List[0][1] 等于Numb[1][1],则将List[0][1] 列替换为'one'

我怎样才能使这样的迭代工作,或者在根本不显式迭代的情况下解决问题?

【问题讨论】:

如果这与pandas有关,您应该添加适当的标签。 @N.P.那是错误的。他希望在同一个 df 上合并或在 Excel 术语中进行索引匹配 对不起,错过了,你是说这个吗?:df['List'] = [df.loc[df['Numb'] == i, 'Name'] for i in df['List']] 我认为我编辑的标题比原来的要好,因为这个问题实际上与迭代无关。但是,“组合”这个词相当模糊,所以任何能想到更好标题的人都欢迎编辑问题。 【参考方案1】:

使用地图

df['List'] = df['List'].map(df.set_index('Numb')['Name'])


    List    Numb    Name
0   one     1   one
1   one     2   two
2   two     3   three
3   four    4   four
4   three   5   five

【讨论】:

【参考方案2】:

创建一个字典来帮助你怎么样?

import pandas as pd

df = pd.DataFrame('List': [1, 1, 2, 4, 3], 'Numb': [1, 2, 3, 4, 5], 'Name': ['one', 'two', 'three', 'four', 'five'])

d = dict(zip(df['Numb'], df['Name']))
df = df.replace('List': d)

【讨论】:

【参考方案3】:

您可以在一行中完成此操作。看起来你想将你的数据框加入到自身上:

df.rename(columns="List": "List_numb").join(df.set_index("Numb")["Name"].to_frame("List"), on="List_numb")[["List", "Numb", "Name"]]

【讨论】:

【参考方案4】:

使用set_index,然后使用reindex

df['List'] = df.set_index('Numb')['Name'].reindex(df['List']).values

print(df)

    List  Numb   Name
0    one     1    one
1    one     2    two
2    two     3  three
3   four     4   four
4  three     5   five

【讨论】:

【参考方案5】:
import pandas as pd

df = pd.DataFrame(
        'List': [1,1,2,4,3],
        'Numb': [1,2,3,4,5],
        'Name':['one','two','three','four','five']
        )

dfnew = pd.merge(df, df, how='inner', left_on=['List'], right_on=['Numb'])
dfnew = dfnew.rename('List_x': 'List', 'Numb_x': 'Numb', 'Name_y': 'Name', axis='columns')
dfnew = dfnew[['List','Numb','Name']]
dfnew['List'] = dfnew['Name']

print (dfnew)
#    List  Numb   Name
#0    one     1    one
#1    one     2    one
#2    two     3    two
#3   four     4   four
#4  three     5  three

【讨论】:

【参考方案6】:

类似于Vaishali's answer 的答案,但显式构建Series 似乎要快一些。

df['List'] = df['List'].map(pd.Series(df['Name'].values, df['Numb']))

Timings(Numb 和 Name 列有唯一值的虚拟数据,到目前为止我只包括了三个最快的解决方案):

>>> df                                                                                                                 
      List  Numb        Name
0        1     1       one_0
1        1     2       two_1
2        2     3     three_2
3        4     4      four_3
4        3     5      five_4
...    ...   ...         ...
4995     1  4996    one_4995
4996     1  4997    two_4996
4997     2  4998  three_4997
4998     4  4999   four_4998
4999     3  5000   five_4999

[5000 rows x 3 columns]

# Timings (i5-6200U CPU @ 2.30GHz, but only relative times are interesting)
>>> %timeit df.set_index('Numb')['Name'].reindex(df['List']).values # jpp                                              
1.14 ms ± 3.36 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
>>> %timeit df['List'].map(df.set_index('Numb')['Name']) # Vaishali                                                    
1.04 ms ± 7.13 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
>>> %timeit df['List'].map(pd.Series(df['Name'].values, df['Numb'])) # timgeb                                                   
437 µs ± 3.16 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

【讨论】:

以上是关于应用T-SQL语言,如何将一列的只分成两列显示,这样的语句怎么写呢?的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql数据库将一列分成两列的方法

在 Python 中通过多个分隔符将一列分成两列

怎么用excel把一列变成两列

SQL 怎么将一列中的数据按一个分隔符分成多列显示

excel如何将一行的奇偶列分成两行,如1,2,3,4,5,6一行变成1,3,5和2,4,6两行

excel如何将一列按奇偶数分成两列