请帮助我了解如何更改字典中的数据框。
让我们考虑最简单的情况并创建两个数据框并从中构造字典。
dates = pd.date_range('20130101',periods=6)
df1 =pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
df2 =pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
DICTOR={}
DICTOR['d1']=df1
DICTOR['d2']=df2
m=DICTOR
现在我想从字典 m
中的 DataFrames 中排除行,例如 B
列中的值为零或负数的行。
我尝试了以下代码:
for name,df in m.items():
for index, row in df.iterrows():
if df.at[index,'B']<0:
df.drop(index,axis=0)
或:
for name,df in m.items():
df=df[df.B>0]
但它不起作用。
我想我的问题是由于可变/不可变对象(immutable对象)引起的,但我不确定。
最佳答案
您需要在迭代时为字典键赋值:
for name, df in m.items():
m[name] = df[df['B'] > 0]
否则,您将不断覆盖变量 df
而不会将其存储在任何地方。
关于python - 更改字典中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206075/