Python 进入新的数据帧
我有一些熊猫的数据:Python 进入新的数据帧,python,pandas,dataframe,jupyter-notebook,unique,Python,Pandas,Dataframe,Jupyter Notebook,Unique,我有一些熊猫的数据: df1 df1['ID_A'].nunique() 5 df2 df2['ID_B'].nunique() 6 df3 df1['ID_A'].nunique() 2 df4 df2['ID_B'].nunique() 9 依此类推,直到200df 如何在此基础上创建新的dataframe 我的预期结果如下所示: combine ID_A ID_B combine_1 5 6 combine_2 2 9 感谢您将列表理解与数据帧列
df1
df1['ID_A'].nunique()
5
df2
df2['ID_B'].nunique()
6
df3
df1['ID_A'].nunique()
2
df4
df2['ID_B'].nunique()
9
依此类推,直到200df
如何在此基础上创建新的dataframe
我的预期结果如下所示:
combine ID_A ID_B
combine_1 5 6
combine_2 2 9
感谢您将列表理解与数据帧列表一起使用,如有必要,通过使用f字符串的列表理解来更改索引名称:
df1 = pd.DataFrame({'ID_A':[1,2,3,4,5,5],
'ID_B':[1,2,3,4,5,6]})
df2 = pd.DataFrame({'ID_A':[1,2,1,2,1,1,1,2,1],
'ID_B':[1,2,3,4,5,6,7,8,9]})
dfs = [df1, df2]
df = pd.DataFrame([x.nunique() for x in dfs])
df.index = [f'combine_{x+1}' for x in df.index]
df.index.name= 'combine'
print (df)
ID_A ID_B
combine
combine_1 5 6
combine_2 2 9
如有必要,仅按列表筛选列:
cols = ['ID_A', 'ID_B']
dfs = [df1, df2]
df = pd.DataFrame([x[cols].nunique() for x in dfs])
#filter only columns starting by ID_
#df = pd.DataFrame([x.filter(regex='^ID_').nunique() for x in dfs])
df.index = [f'combine_{x+1}' for x in df.index]
df.index.name= 'combine'
你期望的索引是什么样子的?如果可能的话,索引可能是
combine_1
和combine_2
,那么像这样的索引如何:第一个combine_1和第二个Group_1?@Arief-如果只有[df1,df2]
那么df.index=['combine_1','Group_1']
应该是200 df呢?在合并和分组后有一个序列号?所以需要['combine_1','group_1','combine_2','group_2',…]
?@Arief-这是个问题,如果需要这种格式,或者另一种格式:),然后我创建解决方案