pandas - Pandas:按日期确定 DF1 MaxCol,将 DF2 Maxcol 值复制到 MaxValueCol
问题描述
我正在使用 Python 2.7 和 Pandas 3.3.4。我有 2 个数据帧:df1 和 df2。在下面的代码中,我想确定 df1 中每一行的最大值列,将 df2 中的列值复制到 df2 中的 MaxValueCol。下面的代码(有许多变体)适用于除了在 df2 中复制值的最后一行之外的所有代码。我得到的错误是:“ValueError:错误的项目数通过了 100,位置意味着 1”
如果我用以下注释语句替换最后一行,它会运行,但它是一个多列 df,而不是所需的单列最大值。
谢谢你。
enter code here
import pandas as pd
import numpy as np
np.random.seed(0)
df1 = pd.DataFrame(np.random.randn(100,6),columns=list('ABCDEF'))
df2 = pd.DataFrame(np.random.randn(100,6),columns=list('ABCDEF'))
df1['maxColumn'] = df1.idxmax(axis=1)
df2['maxValue'] = df2[pd1.loc[:,'maxColumn']]
# maxValueV = df2[df1.loc[:,'maxColumn']]
下面是修改后的代码,以缩短行数和列数,下面显示预期结果。需要找到 df1 中每一行的最大排名列,然后将 df2 的每一行中的该列移动到 df2 中的 maxRankVal2 列。
import pandas as pd
import numpy as np
np.random.seed(4)
df1 = pd.DataFrame(np.random.randn(3,3),columns=list('ABC'))
df2 = pd.DataFrame(np.random.randn(3,3),columns=list('ABC'))
df2['maxRankCol1'] = pd1.idxmax(axis=1)
df2['maxRankVal1'] = pd1.max(axis=1)
temp = pd2[pd2['maxRankCol1']]
#df2['maxRankVal2'] = pd2[pd2['maxRankCol1']] # This statement does not work
df2.insert(3,'maxRankVal2',0) # add Expected Results Column
print(df2.head(4))
df2 Expected Results
A B C maxRankVal2 maxRankCol1 maxRankVal1
0 -1.1474 0.6186 -0.0879 0.6186 B 0.499951
1 0.4250 0.3322 -1.1568 0.4250 A 0.693599
2 0.3509 -0.6068 1.5469 -0.6068 B 0.598575
解决方案
import pandas as pd
import numpy as np
np.random.seed(0)
pd1 = pd.DataFrame(np.random.randn(100,6),columns=list('ABCDEF'))
pd2 = pd.DataFrame(np.random.randn(100,6),columns=list('ABCDEF'))
pd2['maxColumn'] = pd1.max().sort_values()[-1:].index.values[0]
pd2['maxValue'] = pd1.max().sort_values()[-1:][0]
print(pd2[['maxColumn', 'maxValue']].head(1))
maxColumn maxValue
0 C 2.696224
推荐阅读
- java - 将第一个、第二个和第三个 int 扫描器值分配给 3 个不同的队列
- html - 在 Angular 中为多个路由添加 Active 类
- javascript - 在html中单击链接更改占位符
- javascript - 对字符串中的字母进行排序
- javascript - Babel-loader 在包含 3rd 方库后停止转译箭头函数
- sql - sql oracle中的当前日期
- qt - 如果文件夹中的文件存在,如何检查 30 秒?
- ruby-on-rails - Sidekiq 使用哪些 Redis 命令?
- android - Sendgrid Android 插件初始化错误“java.lang.NoSuchFieldError: No static field INSTANCE of type .../AllowAllHostnameVerifier”
- c# - C# 中的 Websocket,任何 nuget 包都允许更改 nic?(网络接口卡)