繁体   English   中英

如何将条件行添加到 pandas dataframe

[英]How to add conditional row to pandas dataframe

我试图寻找一个简洁的答案,但没有任何帮助。 我正在尝试向 dataframe 添加一行,该行为第一列获取一个字符串,然后为每一列获取总和。 我遇到了一个标量问题,所以我尝试将所需的行变成一个系列,然后转换为 dataframe,但显然我添加了四行和一列值,而不是添加一行四列值。

我的代码:

def country_csv():
    # loop through absolute paths of each file in source
    for filename in os.listdir(source):
        filepath = os.path.join(source, filename)
        if not os.path.isfile(filepath):
            continue
        df = pd.read_csv(filepath)
        df = df.groupby(['Country']).sum()
        df.reset_index()
        print(df)
        # df.to_csv(os.path.join(path1, filename))

样品 dataframe:

                    Confirmed  Deaths  Recovered
Country                                         
Afghanistan               299       7         10
Albania                   333      20         99

希望将此视为第一行

World 632 27 109

IIUC,您可以创建一个字典,然后将其重新传递到 dataframe 以进行连接。

data = df.sum(axis=0).to_dict()
data.update({'Country' : 'World'})
df2 = pd.concat([pd.DataFrame(data,index=[0]).set_index('Country'),df],axis=0)

print(df2)

             Confirmed  Deaths  Recovered
Country                                  
World              632      27        109
Afghanistan        299       7         10
Albania            333      20         99

或使用assignTranspose置的单线

df2 = pd.concat(
    [df.sum(axis=0).to_frame().T.assign(Country="World").set_index("Country"), df],
    axis=0,
)



print(df2)

             Confirmed  Deaths  Recovered
Country                                  
World              632      27        109
Afghanistan        299       7         10
Albania            333      20         99
import pandas as pd
import datetime as dt

df
            Confirmed   Deaths  Recovered
Country         
Afghanistan 299         7       10
Albania     333         20      99

df.loc['World']  = [df['Confirmed'].sum(),df['Deaths'].sum(),df['Recovered'].sum()]
df.sort_values(by=['Confirmed'], ascending=False)


             Confirmed  Deaths  Recovered
Country         
World        632        27      109
Albania      333        20      99
Afghanistan  299        7       10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM