【问题标题】:Pandas dataframe column math when row conditions is met满足行条件时的 Pandas 数据框列数学
【发布时间】:2018-03-12 13:11:56
【问题描述】:

我有一个包含以下数据的数据框。我想查询每个数据框 (1-4) 的 age 列以获取 295.0 和 305.0 之间的值。对于每个数据帧,此范围内将有一个 age 值和一个相应的 subsidence 值。我想获取 subsidence 值并将其添加到数据框中的剩余值中。
例如在第一个数据帧中;在age 300.0 subsidence= 274.057861。在这种情况下,274.057861 将被添加到数据帧 1 中的其余 subsidence 值中。
在第二个数据帧中;在age 299.0 subsidence= 77.773720。因此,77.773720 将被添加到数据框 2 中的其余 subsidence 值中。等等。是否可以在 Pandas 中轻松做到这一点,或者我最好还是寻找替代解决方案。

谢谢:)

1                  2                  3                  4  \
  age  subsidence    age  subsidence    age  subsidence    age   
0     0.0 -201.538712    0.0 -235.865433    0.0  134.728821    0.0   
1    10.0  -77.446548    8.0 -102.183365   10.0   88.796074   10.0   
2    20.0   44.901043   18.0   35.316868   20.0   35.871178   20.0   
3    31.0  103.172806   28.0   98.238434   30.0  -17.901653   30.0   
4    41.0  124.625687   38.0  124.719254   40.0  -13.381897   40.0   
5    51.0  122.877541   48.0  130.725235   50.0  -25.396996   50.0   
6    61.0  138.810898   58.0  140.301117   60.0  -37.057205   60.0   
7    71.0  119.818176   68.0  137.433670   70.0  -11.587639   70.0   
8    81.0   77.867607   78.0   96.285652   80.0   21.854662   80.0   
9    91.0   33.612885   88.0   32.740803   90.0   67.754501   90.0   
10  101.0   15.885051   98.0    8.626043  100.0  150.172699  100.0   
11  111.0  118.089211  109.0   88.812439  100.0  150.172699  100.0   
12  121.0  247.301956  119.0  212.000061  110.0  124.367874  110.0   
13  131.0  268.748627  129.0  253.204819  120.0  157.066010  120.0   
14  141.0  231.799255  139.0  292.828461  130.0  145.811783  130.0   
15  151.0  259.626343  149.0  260.067993  140.0  175.388763  140.0   
16  161.0  288.704651  159.0  240.051605  150.0  265.435791  150.0   
17  171.0  249.121857  169.0  203.727097  160.0  336.471924  160.0   
18  181.0  339.038055  179.0  245.738480  170.0  283.483582  170.0   
19  191.0  395.920410  189.0  318.751160  180.0  381.575500  180.0   
20  201.0  404.843445  199.0  338.245209  190.0  491.534424  190.0   
21  211.0  461.865784  209.0  418.997559  200.0  495.025604  200.0   
22  221.0  518.710632  219.0  446.496216  200.0  495.025604  200.0   
23  231.0  483.963867  224.0  479.213287  210.0  571.982361  210.0   
24  239.0  445.292389  229.0  492.352905  220.0  611.698608  220.0   
25  249.0  396.609497  239.0  445.322144  230.0  645.545776  230.0   
26  259.0  321.553558  249.0  429.429932  240.0  596.046265  240.0   
27  269.0  306.150177  259.0  297.355103  250.0  547.157654  250.0   
28  279.0  259.717468  269.0  174.210785  260.0  457.071472  260.0   
29  289.0  301.114410  279.0  114.175957  270.0  438.705170  270.0   
30  300.0  274.057861  289.0   91.768898  280.0  397.985535  280.0   
31  310.0  216.760361  299.0   77.773720  290.0  426.858276  290.0   
32  320.0  192.317093  309.0   73.767090  300.0  410.508331  300.0   
33  330.0  179.511917  319.0   63.295345  300.0  410.508331  300.0   
34  340.0  231.126053  329.0   -4.296405  310.0  355.303558  310.0   
35  350.0  142.894958  339.0  -62.745190  320.0  284.932892  320.0   
36  360.0   51.547047  350.0  -60.224789  330.0  251.817078  330.0   
37  370.0  -39.064964  360.0  -85.826874  340.0  302.303925  340.0   
38  380.0  -54.111374  370.0  -81.139206  350.0  207.799942  350.0   
39  390.0  -68.999535  380.0  -40.080212  360.0   77.729439  360.0   
40  400.0  -47.595322  390.0  -29.945852  370.0 -127.037209  370.0   
41  410.0   13.159509  400.0  -26.656607  380.0 -109.327545  380.0   
42    NaN         NaN  410.0  -13.723764  390.0 -127.160942  390.0   
43    NaN         NaN    NaN         NaN  400.0  -61.404510  400.0   
44    NaN         NaN    NaN         NaN  410.0   13.058900  410.0   

【问题讨论】:

  • 我不确定我是否理解你的问题。您的数据是具有多索引的 df 还是面板或具有 dfs 的 df?你的描述听起来很混乱。
  • 它是一个带有 dfs 的 df。

标签: pandas variables dataframe math conditional-statements


【解决方案1】:

对于第一个数据框:

df1['subsidence'] = df1[(df1.age >295) & (df1.age <305)]['subsidence'].value

您需要相应地更新每个数据帧。

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多