这可能被认为是对各种方法的详尽解释的重复,但是由于数据帧数量增加,我似乎无法在其中找到解决问题的方法。
我有多个数据框(超过10个),每个数据框在一列中不同VARX。这只是一个快速且过于简化的示例:
import pandas as pd
df1 = pd.DataFrame({'depth': [0.500000, 0.600000, 1.300000],
'VAR1': [38.196202, 38.198002, 38.200001],
'profile': ['profile_1', 'profile_1','profile_1']})
df2 = pd.DataFrame({'depth': [0.600000, 1.100000, 1.200000],
'VAR2': [0.20440, 0.20442, 0.20446],
'profile': ['profile_1', 'profile_1','profile_1']})
df3 = pd.DataFrame({'depth': [1.200000, 1.300000, 1.400000],
'VAR3': [15.1880, 15.1820, 15.1820],
'profile': ['profile_1', 'profile_1','profile_1']})
Run Code Online (Sandbox Code Playgroud)
每个df轮廓都有相同或不同的深度,因此
我需要创建一个新的DataFrame,它将合并所有单独的DataFrame,其中操作的关键列是depth和profile,并且每个配置文件都显示所有深度值。
VARX因此NaN,该值应位于没有该轮廓的变量的深度测量的位置。
因此,结果应该是一个新的,压缩的DataFrame,其中的所有都VARX作为depth和profile的附加列,如下所示:
name_profile depth VAR1 VAR2 …Run Code Online (Sandbox Code Playgroud) 我必须从两个数组中删除nan和inf值.我发现此帖有用/sf/answers/3401433591/用于删除nan.当我可以创建一个掩码去除nan和inf值时,有没有类似的解决方案?
下面的例子只是说明性的,我有大尺寸的数组(400个元素)
import numpy as np
from numpy import nan, inf
a = np.asarray([0.5, 6.2, np.nan, 4.5, np.inf])
b = np.asarray([np.inf, np.inf, 0.3, np.nan, 0.5])
bad = ~np.logical_or(np.isnan(a), np.isnan(b))
X = np.compress(bad, a)
Y = np.compress(bad, b)
BIAS = np.nanmean(X - Y)
RMSE = np.sqrt(np.nanmean((X - Y)**2))
CORR = np.corrcoef(X, Y)
Run Code Online (Sandbox Code Playgroud)
我需要这个,以便正确地获得统计数据和图表
我有一个带有0.1 m网格的深度列的数据框。
import pandas as pd
df1 = pd.DataFrame({'depth': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1 ],
'350': [7.898167, 6.912074, 6.049002, 5.000357, 4.072320, 3.070662, 2.560458, 2.218879, 1.892131, 1.588389, 1.573693],
'351': [8.094912, 7.090584, 6.221289, 5.154516, 4.211746, 3.217615, 2.670147, 2.305846, 1.952723, 1.641423, 1.622722],
'352': [8.291657, 7.269095, 6.393576, 5.308674, 4.351173, 3.364569, 2.779837, 2.392813, 2.013316, 1.694456, 1.671752],
'353': [8.421007, 7.374317, 6.496641, 5.403691, 4.439815, 3.412494, 2.840625, 2.443868, 2.069017, 1.748445, 1.718081 ],
'354': [8.535562, 7.463452, 6.584512, 5.485725, 4.517310, 3.438680, 2.890678, 2.487039, 2.123644, …Run Code Online (Sandbox Code Playgroud) 我知道这个主题在堆栈溢出时被提出了几次,但是我仍然遇到插值问题.
我有一组复杂的数据框,如果简化,可能看起来像这样:
df_new = pd.DataFrame(np.random.randn(5,7), columns=[402.3, 407.2, 412.3, 415.8, 419.9, 423.5, 428.3])
wl = np.array([400.0, 408.2, 412.5, 417.2, 420.5, 423.3, 425.0])
Run Code Online (Sandbox Code Playgroud)
所以我需要做的是逐列插入每行的cols(wl)的新指定值.
以及如何使用仅包含wl数组中显示的值的列来获取新数据帧?
我必须使用相同的列的数据帧.我的任务应该是从df_nap中减去df_tot而不触及第一列('A').什么是最简单的解决方案?
谢谢!
import numpy as np
import pandas as pd
df_tot = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
df_nap = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
Run Code Online (Sandbox Code Playgroud)