python - pd.crosstab() 在 for 循环中
问题描述
假设我有以下数据框:
df1 = pd.DataFrame({'col1':['x','y','z','x','x'],'col2':['n1','n2',np.nan,'n3','n2']})
df2 = pd.DataFrame({'col1':['x','y','z','x','x'],'col2':['m1','m2',np.nan,'m3','m2']})
df3 = pd.DataFrame({'col1':['x','y','z','x','x'],'col2':['o1','o2',np.nan,'o3','o2']})
df_list = [df1,df2,df3]
我想对以下每个元素进行交叉表df_list
:
pd.crosstab(df_list[i]['col1'], df_list[i]['col2'].isna())
如果我替换i
为0,1
或者2
我得到了正确的表。现在我想把它放在一个for循环中,即:
crosstab_list = []
for i in df_list:
crosstab_list.append(pd.crosstab(df_list[i]['col1'], df_list[i]['col2'].isna()))
但我收到以下错误,
TypeError: list indices must be integers or slices, not DataFrame
我想知道我在那里错过了什么?
解决方案
你想了很多:
crosstab_list = []
for i in df_list:
crosstab_list.append(pd.crosstab(i['col1'], i['col2'].isna()))
推荐阅读
- amazon-web-services - AWS Cloudwatch 警报触发 lambda
- python - Keras回归预测与输出维度不同
- amazon-cloudformation - 在 Cloudwatch 仪表板模板 (Cloudformation) 中使用伪变量
- gcc - 将本机节点模块编译到 Android 时无法链接库。使用 -fPIC 标志时出现 -fPIC 问题重新编译
- javascript - Sourcemap 在 Sentry 中无效或不可解析
- guid - ProductCode (GUID) 用于为 AutoCAD 自动加载 DLL
- java - Tomcat 优雅关闭
- node.js - 如何在 Service 构造函数中对 Controller 进行单元测试和模拟 @InjectModel
- tomcat - Tomcat 服务器的 JVM 可用内存未返回给操作系统
- javascript - 如何打印我放入的文件的文件名在一个?