繁体   English   中英

从数据框字典中提取列

[英]Extracting column from dictionary of dataframes

我有一个字典d ,其中的键与 pandas dataframe 相关联。 所以,我可以执行print(d[0]['col1']并且我可以为 key 0返回col1

如果我打印d ,我对键0有类似的东西 -

{0:                               col1       type         Weather  \
0                                    id    varchar                  
1                                    id    varchar                  
2                                    id    varchar                  
3                                    id    varchar                  
4                                    id    varchar                  
..                               ...        ...            ...   

预期结果变为

{0:                     col1
0                       id
1                       id
2                       id
3                       id
4                       id
..                               ...

但是我怎样才能把它应用到所有的键上呢? 所以我的字典只包括col1 我已经坚持了一段时间,任何指导表示赞赏。

我会这样做:

import pandas as pd

d = {0:pd.DataFrame({'col0':[0,1,2], 'col1':[0,0,0]}),
    1:pd.DataFrame({'col0':[1,2,3], 'col1':[1,1,1]})}

def get_cols(d,cols):
    for key, value in d.items():
        d[key] = value[cols]
    return d

这将为您提供所选列的系列

print(get_cols(d,'col0'))

这将为您提供所选列的 df

print(get_cols(d,['col0']))

这将为您提供所选列的 df

print(get_cols(d,['col0','col1']))

注意:此策略修改d ,因为它是通过引用传递的。 您也可以在 function 中修改之前返回None并只使用 d 或深拷贝d

您是否尝试过使用字典理解?

import pandas as pd

df0 = pd.DataFrame({'col1': [1,2,3], 'col2': [3,4,5], 'col3': [5,6,7]})
df1 = pd.DataFrame({'col1': [7,8,9], 'col2': [10,11,12], 'col3': [13,14,15]})

d = {}
d[0] = df0
d[1] = df1


print({x:d[x]['col1'] for x in d})

如果您想要没有索引的 output 可以将最后一行替换为

print({x:d[x]['col1'].values for x in d})

或者

print({x:d[x]['col1'].tolist() for x in d})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM