首页 > 解决方案 > 根据多个条件将特定列的行条目附加到空数据框

问题描述

我有一个名为 dictoftickersdf 的数据框字典,看起来像这样。

我将使用字典中的 for 循环遍历每一帧。所以假设每一个都被称为tickersdf。

    Country Type  Ticker
1   US      Pub   AAPL
2   US      Priv  etc
3   GER     Pub   etc
4   HK      Pub   etc

    Country Type  Ticker
1   US      Pub   GE
2   US      Priv  etc
3   GER     Pub   etc
4   HK      Pub   etc
5   US      Pub   MSFT
etc..

我有一个空的数据框,df = pd.DataFrame()

我正在对具有不同公司的各种tickersdf 运行for 循环。

我只想根据某些条件(类型 == Pub 和 Country == US)附加出现在列代码中的条目。

所以我希望最终的 df 看起来像这样

AAPL
GE
MSFT
...

到目前为止,我有这个,

df = pd.DataFrame()

for subdir, dirs, files in os.walk(r"/Users/xxx/Documents/"):
    for file in files:
        filepath = os.path.join(subdir, file)
        print(filepath)

        dictoftickersdf = pd.read_excel(filepath,sheet_name=None) #multiple sheets per file

        for key, tickersdf in dictoftickersdf.items():
            df = df.append(tickersdf.loc[(tickersdf['Country']=='US') & (tickersdf['Type']=='Pub'),'Ticker'])

但是数据框 df 出现空,我做错了什么?

更新:

我在最后添加了一个分配命令,它不再为空,但它仍然无法正常工作。现在df看起来像这样

          1     1     5    ...
Ticker    AAPL  NaN   NaN  ...
Ticker    NaN   GE    MSFT ...
Ticker    ....................

标签: pythonpandasdataframeconditional-statements

解决方案


看起来“Public”在您的数据框中被缩短为“Pub”。尝试缩短该部分以查看是否可以修复它。


推荐阅读