我正在尝试运行2个嵌套循环,将数据从1个巨大的数据帧(比如数据)分成12个独立的数据帧。 '数据'有列(leaf1,leaf2,leaf3,leaf4,..,leaf12)。我创建了12个不同的数据帧,名称为leaf1,leaf2,leaf3 ...,leaf12。我正在检查主要数据帧的每一行。如果该行不是“NaN'”,那么我将使用以下代码将其附加到新创建的数据框之一中:
leaf1 = pd.DataFrame()
leaf2 = pd.DataFrame()
.
.
.
leaf12 = pd.DataFrame()
list1 = ['leaf1', 'leaf2',...,'leaf12']
for i in list1:
temp1 = data[[i]]
if temp1.isnull().any().any() == False:
eval(i) = eval(i).append(temp1)
在最后一行中,我需要将字符串转换为变量,然后将数据帧附加到该变量中。但是,我收到了一个错误。请帮忙。
答案 0 :(得分:0)
我认为更好的是将其转换为If IsNull(a) Then
MsgBox "a is null"
Else
'...
:
dictionary of DataFrames
与:
相同np.random.seed(1997)
df = pd.DataFrame(np.random.choice([np.nan,1,5], size=(10,12)))
df.columns = ['leaf{}'.format(x+1) for x in df.columns]
print (df)
leaf1 leaf2 leaf3 leaf4 leaf5 leaf6 leaf7 leaf8 leaf9 leaf10 \
0 1.0 1.0 NaN NaN 5.0 5.0 5.0 5.0 1.0 NaN
1 1.0 5.0 NaN 1.0 1.0 NaN 1.0 NaN 5.0 1.0
2 1.0 5.0 5.0 1.0 NaN 1.0 1.0 NaN 5.0 NaN
3 1.0 5.0 NaN 1.0 1.0 5.0 5.0 1.0 1.0 1.0
4 NaN 5.0 5.0 5.0 NaN 1.0 1.0 1.0 1.0 1.0
5 NaN NaN NaN 1.0 NaN 5.0 5.0 1.0 1.0 1.0
6 5.0 1.0 1.0 1.0 NaN 1.0 1.0 5.0 5.0 1.0
7 5.0 1.0 5.0 NaN NaN 5.0 NaN 1.0 1.0 5.0
8 5.0 5.0 1.0 NaN 1.0 1.0 5.0 1.0 5.0 1.0
9 5.0 1.0 5.0 NaN 5.0 NaN NaN 5.0 1.0 NaN
leaf11 leaf12
0 NaN 1.0
1 NaN 5.0
2 1.0 5.0
3 1.0 1.0
4 NaN NaN
5 5.0 1.0
6 5.0 NaN
7 NaN 1.0
8 NaN 1.0
9 NaN 5.0
dfs = {c:df[[c]] if df[c].notnull().all()
else pd.DataFrame(columns=[c]) for c in df.columns }
然后按dfs = {}
for c in df.columns:
if df[c].notnull().all():
dfs[c] = df[[c]]
else:
dfs[c] = pd.DataFrame(columns=[c])
s选择,此处为列名:
key