【问题标题】:Add variables to DataFrame through iteration通过迭代将变量添加到DataFrame
【发布时间】:2020-03-27 06:21:52
【问题描述】:

我有一个预定义的 DataFrame df,我根据值 y 和 z 提供的位置为其分配值 x

import pandas as pd

x = ['A', 'B', 'C', 'D']
y = [5000, 5300, 1200, 5300]
z = [3000, 3000, 5300, 3000]

df = pd.DataFrame(columns= [1200,3000,5000,5300], index = [1200,3000,5000,5300]) 

for a,b,c in zip(x,y,z):
    df.at[b,c] = a

我打算获取数据框:

Index 1200 3000 5000 5300
1200   x     x    x    C
3000   x     x    x    x
5000   x     A    x    x
5300   x     B    x    x         
             D    

但是使用提供的代码我只能得到 ​​p>

Index 1200 3000 5000 5300
1200   x     x    x    C
3000   x     x    x    x
5000   x     A    x    x           
5300   x     D    x    x

如果在之前的迭代中添加了一个值,我该如何添加一个值?

【问题讨论】:

  • [5000, 3000] 应该出现什么? AB?
  • @ignoring_gravity 是的,[5000, 3000]在这种情况下应该包括AB
  • 好的,但是怎么做?您希望索引5000 重复两次吗?
  • 刚刚注意到它的索引 5300 并且您要求它同时包含 BD。所以...您希望它包含BD

标签: pandas dataframe iteration


【解决方案1】:
import pandas as pd

x = ['A', 'B', 'C', 'D']
y = [5000, 5300, 1200, 5300]
z = [3000, 3000, 5300, 3000]

df = pd.DataFrame(columns= [1200,3000,5000,5300], index = [1200,3000,5000,5300]) 

for a,b,c in zip(x,y,z):
    if df.at[b,c] is np.nan:
        df.at[b,c] = a
    else:
        df.at[b,c] += a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多