Python 熊猫连接数据帧和序列

Python 熊猫连接数据帧和序列,python,pandas,dataframe,concatenation,Python,Pandas,Dataframe,Concatenation,我有一个主数据帧sdb,我想在for循环中使用它,从它的某些列中获得唯一的值,并将这些列合并到一个新的输出数据帧df中。一旦每个系列只有唯一的值,索引就会不同。请看下面我的答案: tbl = '' i = 1 df = pd.DataFrame() for col in sdb.columns: tbl = 'e_{}'.format(i) uni = sdb[col].nunique() if uni <= 25: tbl = pd.DataFr

我有一个主数据帧sdb,我想在for循环中使用它,从它的某些列中获得唯一的值,并将这些列合并到一个新的输出数据帧df中。一旦每个系列只有唯一的值,索引就会不同。请看下面我的答案:

tbl = ''
i = 1
df = pd.DataFrame()

for col in sdb.columns:
    tbl = 'e_{}'.format(i)
    uni = sdb[col].nunique()
    if uni <= 25:
        tbl = pd.DataFrame(sdb[col].drop_duplicates())
        tbl.reset_index(drop=True)

    df = pd.concat([df, tbl], axis=1)
tbl=''
i=1
df=pd.DataFrame()
对于sdb.col列中的列:
tbl='e_{}'。格式(一)
uni=sdb[col].nunique()

如果uni这里有一个例子来说明这种情况:

import pandas as pd

tbl = ''
sdb = pd.DataFrame(
           {'A': [1, 2, 3, 4, 5],
            'B': [1, 2, 3, 4, 4],
            'C': [1, 2, 3, 3, 3],
            'D': [1, 2, 2, 2, 2]},
            index=[0, 1, 2, 3, 4])

df  = pd.DataFrame()
print(sdb)
print('\n')

for col in sdb.columns:
  uni = sdb[col].nunique()
  if uni <= 3:
    tbl = pd.DataFrame(sdb[col].drop_duplicates())
    tbl.reset_index(drop=True)

    df = pd.concat([df, tbl], axis=1)

print(df)

如果
uni
大于25,则
tbl
可能只是一个字符串,而不是
Dataframe
对象。@yoonghm:谢谢,我只想捕获sdb列中没有唯一项的情况,如果您有一个列的唯一值大于25,然后
tbl
将不是
DataFrame
类型,而是
string
类型。您可以尝试将值25增加到更大的值以进行验证。如果你真的只想
concat
当唯一数小于25时,那么在
中缩进语句
df=pd.concat(…)
,如果uni-great,我相信这可能是我原始代码中的缩进。。?无论如何,非常感谢你的帮助!
   A  B  C  D
0  1  1  1  1
1  2  2  2  2
2  3  3  3  2
3  4  4  3  2
4  5  4  3  2


   C    D
0  1  1.0
1  2  2.0
2  3  NaN