我正在使用几个数据框,我将结合整数值来推断最终得分。有点像最终成绩'计算,也许是一个'测试'称重和' HW'称重,拍照。
无论如何,我想使用索引值列表,并遍历每个数据帧以查看它们是否存在于每个数据帧中。如果数据框没有条目'对于此数据框中的索引或字符,我想为数据框中的字符添加一行,然后为每个月的条目分配一个常量值。我正在查找的数据框按列和行按字符分列。
我考虑过使用列表或字典。这是我想要使用的列表,只是为了向您展示每个角色:
my_list =
['Sonic','Knuckles','Shadow','Tails','Amy']
以下是我想将其添加到其中一个数据框的示例。
penalties_df =
Jan 18 Feb 18 Mar 18 Apr 18
Character
Sonic 1.0 2.0 3.0 1.0
Knuckles 2.0 2.0 2.0 2.0
Amy 1.0 2.0 1.0 1.0
我还没有收到Shadow
和Tails
的任何内容,这就是为什么他们没有排。
Shadow xxx xxx xxx xxx
Tails xxx xxx xxx xxx
我想要的输出:
penalties_df =
Jan 18 Feb 18 Mar 18 Apr 18
Character
Sonic 1.0 2.0 3.0 1.0
Knuckles 2.0 2.0 2.0 2.0
Shadow 0.0 0.0 0.0 0.0
Tails 0.0 0.0 0.0 0.0
Amy 1.0 2.0 1.0 1.0
&{39; xxx
只是占位符,用于指示我尚未从该角色(Shadow
和Tails
)收到任何数据。我定期运行我的代码,有时我运行代码直到我收到一个字符的数据,我想通过检查数据框中是否存在该字符来创建一个行并赋值为0。
我考虑了.append()
,但我没有现有的数据框可以附加到penalties_df
。我只想创建新行。
我可以为此方案创建要访问的字典吗?我认为我的字典会是这样的,但是,输入一堆重复的0会是多余的(我只会在这里用一段时间来保持我的问题简短):< / p>
penalties_none = {
"Sonic" : 0,
"Knuckles" : 0,
"Shadow" : 0,
"Tails" : 0,
"Amy" : 0,
}
提前致谢。
答案 0 :(得分:1)
您需要在df.index
和my_list
之间区分名称。然后你需要用这些差异制作一个df并附加到你的主df。
df.append(pd.DataFrame(index=list(set(my_list) - set(df.index)))).fillna(0)
输出:
res = df.append(pd.DataFrame(index=list(set(my_list) - set(df.index)))).fillna(0)
res.index.name='Character'
输出:
Apr_18 Feb_18 Jan_18 Mar_18
Character
Sonic 1.0 2.0 1.0 3.0
Knuckles 2.0 2.0 2.0 2.0
Amy 1.0 2.0 1.0 1.0
Tails 0.0 0.0 0.0 0.0
Shadow 0.0 0.0 0.0 0.0
答案 1 :(得分:1)
我认为您需要reindex
功能:
my_list = ['Sonic','Knuckles','Shadow','Tails','Amy']
penalties_df = penalties_df.reindex(mylist, fill_value = 0)