例如,如果我有3个这样的数据框:

In [1]: df1 = pd.DataFrame({'A': ['32', '36', '40', '33'],
   ...:                     'B': ['32', '34', '39', '35'],
   ...:                     'C': ['34', '32', '35', '36'],
   ...:                     'D': ['35', '39', '42', '40']},
   ...:                     index=[0, 1, 2, 3])
   ...:

In [2]: df2 = pd.DataFrame({'A': ['33', '36', '37', '40'],
   ...:                     'B': ['42', '43', '46', '39'],
   ...:                     'C': ['34', '36', '38', '40'],
   ...:                     'D': ['32', '35', '34', '37']},
   ...:                      index=[0, 1, 2, 3])
   ...:

In [3]: df3 = pd.DataFrame({'A': ['38', '39', '40', '41'],
   ...:                     'B': ['38', '37', '41', '40'],
   ...:                     'C': ['36', '39', '42', '41'],
   ...:                     'D': ['34', '39', '37', '39']},
   ...:                     index=[0, 1, 2, 3])


如果要从这3个数据框中绘制特定的单元格怎么办?例如,我想在这些数据框的第一行和第一列中绘制单元格,以查看趋势。
使用iloc一次访问它似乎很la脚,尤其是在具有更多数据帧的情况下(实际上,我有33个从csv导入的数据帧,分别具有600列和400行)
有什么方法比iloc容易吗?

最佳答案

选项1

对于您的问题,最通用的解决方案是将数据框包装为pandas.Panel

pnl = pd.Panel({'df1': df1, 'df2': df2, 'df3': df3})[['df1', 'df2', 'df3']]


然后,您可以访问所需的系列

pnl.iloc[:, 0, 0]

df1    32
df2    33
df3    38
Name: A, dtype: object




选项2

您也可以将数据框拖放到另一个数据框

df = pd.concat([d.stack() for d in [df1, df2, df3]],
               axis=1, keys=['df1', 'df2', 'df3'])


然后使用

df.iloc[0, :]

df1    32
df2    33
df3    38
Name: (0, A), dtype: object


要么

df.to_panel().iloc[:, 0, 0]

df1    32
df2    33
df3    38
Name: A, dtype: object




选项3

您只需抓住3个项目并将其包装在panda.Series

pd.Series([d.iloc[0, 0] for d in [df1, df2, df3]])

0    32
1    33
2    38
dtype: object

10-06 07:14
查看更多