gpt4 book ai didi

python - 将行附加到数据框,如果不存在则添加新列

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:42 25 4
gpt4 key购买 nike

我有一个像下面这样的 df

>>df
group sub_group max
0 A 1 30.0
1 B 1 300.0
2 B 2 3.0
3 A 2 2.0

我需要将 group 和 sub_group 作为属性(列)并将最大值作为行所以我愿意

>>> newdf.set_index(['group','sub_group']).T
group A B A
sub_group 1 1 2 2
max 30.0 300.0 3.0 2.0

这给了我预期的格式

现在我需要将它合并到另一个类似的数据框

>>df2
group sub_group max
0 C 1 3000.0
1 A 1 4000.0

这样我的合并结果是

group         A      B         A     C
sub_group 1 1 2 2 1
max 30.0 300.0 3.0 2.0 NaN
max 4000.0 NaN NaN NaN 3000.0

基本上,在每个新的 df 中,我们都将值放在适当的标题下,如果有一个新的组或子组,我们将其添加到较大的 df。我不确定我的转置然后尝试合并追加的方式是否是一个好方法

由于这些 df 是在循环中生成的(循环项是日期),我想找到一种方法来用循环日期替换第一列(预期操作)中打印的 max

dates=['20170525', '20170623', '20170726']

for date in dates:
df = pd.read_csv()

最佳答案

我认为您可以先将参数 index_col 添加到 read_csv 以获取第一列和第二列的 Multiindex:

dfs = []
for date in dates:
df = pd.read_csv('name', index_col=[0,1])
dfs.append(df)

#another test df was added
print (df3)
max
group sub_group
D 1 3000.0
E 1 4000.0

然后 concat它们与 list 的参数 keys 一起,然后通过 unstack reshape 并转置:

#dfs = [df,df2,df3]
dates=['20170525', '20170623', '20170726']
df = pd.concat(dfs, keys=dates)['max'].unstack(0).T
print (df)
group A B C D E
sub_group 1 2 1 2 1 1 1
20170525 30.0 2.0 300.0 3.0 NaN NaN NaN
20170623 4000.0 NaN NaN NaN 3000.0 NaN NaN
20170726 NaN NaN NaN NaN NaN 3000.0 4000.0

关于python - 将行附加到数据框,如果不存在则添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45348325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com