我有一个主数据帧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)
此代码一直工作到到达最后一行并抛出错误:无法连接类型为“”的对象;仅pd.Series,pd.DataFrame ... 这对我来说还不清楚,因为当我同时在tbl和df上执行.info()时,它们都显示为数据帧。 任何谢意
答案 0 :(得分:1)
以下是说明情况的示例:
space_index
输出:
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)