Python 熊猫连接数据帧和序列
我有一个主数据帧sdb,我想在for循环中使用它,从它的某些列中获得唯一的值,并将这些列合并到一个新的输出数据帧df中。一旦每个系列只有唯一的值,索引就会不同。请看下面我的答案: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
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