python - 更改字典中的数据框

标签 python pandas dictionary for-loop

请帮助我了解如何更改字典中的数据框。

让我们考虑最简单的情况并创建两个数据框并从中构造字典。

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/

相关文章:

python - 使用 python HTTPServer 处理请求数量

python - 根据两个数据框列的匹配创建另一列

python - 如何计算 pandas datetime 对象的均值和方差?

arrays - 用字典应用 Array.map

python - 替换字典中特定键的值

Python错误email.mime没有属性 'MIMEMultipart'

python - 如何在 Python 中创建扩展加载器?

python - Socket.IO 适用于 Firefox 和 Edge,但不适用于 Chrome?

python - Pandas :通过第一次和最后一次出现来填充每一行

VB.NET 和 LINQ 查询字典