在循环熊猫中使用数据框名称

时间:2018-12-21 12:45:37

标签: python pandas

我有几个数据帧,并且需要对所有数据帧执行相同的操作。

我目前正在这样做:

df1=df1.reindex(newindex)
df2=df2.reindex(newindex)
df3=df3.reindex(newindex)
df4=df4.reindex(newindex)

有没有更整齐的方法?

也许是

df=[df1,df2,df3,df4]

for d in df:
     d=d.reindex(newindex)

2 个答案:

答案 0 :(得分:2)

是的,您的解决方案很好,只需通过列表理解将其分配给新的list of DataFrame

dfs = [df1,df2,df3,df4]
dfs_new = [d.reindex(newindex) for d in dfs]

解压的不错解决方案,如建议@Joe Halliwell,谢谢:

df1, df2, df3, df4 = [d.reindex(newindex) for d in dfs]

或者像建议@roganjosh一样可以创建DataFrames字典:

dfs = [df1,df2,df3,df4]
names = ['a','b','c','d']

dfs_new_dict = {name: d.reindex(newindex) for name, d in zip(names, dfs)}

然后通过键选择每个DataFrame:

print (dfs_new_dict['a'])

示例

df = pd.DataFrame({'a':[4,5,6]})
df1 = df * 10
df2 = df  + 10
df3 = df - 10
df4 = df / 10
dfs = [df1,df2,df3,df4]
print (dfs)
[    a
0  40
1  50
2  60,     a
0  14
1  15
2  16,    a
0 -6
1 -5
2 -4,      a
0  0.4
1  0.5
2  0.6]

newindex = [2,1,0]
df1, df2, df3, df4 = [d.reindex(newindex) for d in dfs]
print (df1)
print (df2)
print (df3)
print (df4)
    a
2  60
1  50
0  40
    a
2  16
1  15
0  14
   a
2 -4
1 -5
0 -6
     a
2  0.6
1  0.5
0  0.4

或者:

newindex = [2,1,0]
names = ['a','b','c','d']
dfs_new_dict = {name: d.reindex(newindex) for name, d in zip(names, dfs)}

print (dfs_new_dict['a'])
print (dfs_new_dict['b'])
print (dfs_new_dict['c'])
print (dfs_new_dict['d'])

答案 1 :(得分:1)

如果您有很多大型数据框,则可以使用多个线程。我建议使用 pathos 模块(可以使用 pip安装路径安装):

import QtQuick.Controls 1.4

TableView {
    id: table
    selectionMode: Controls_1.SelectionMode.ContiguousSelection

    function onTableSelectionChanged() {
        console.log(selection)
    }
}
相关问题