【问题标题】:Python/Pandas: How to create a table of results with new variables and values calculated from an existing dataframePython/Pandas:如何使用从现有数据帧计算的新变量和值创建结果表
【发布时间】:2018-02-15 05:31:10
【问题描述】:

我希望能够像这样创建一个交叉表/表/数据框(无论名称如何):

____________________      
Performance  "value" (This value must come from a X vector, which has a formula to go to dataset, calculate and return this value)
____________________
LTFU         "value" (This value must come from a y vector, which has a formula to go to dataset, calculate and return this value)
____________________

请注意,Performance 和 LTFU 值是从应用到 python 中的 .csv 数据集的函数生成的。 .csv 数据集中不存在性能和 LTFU,两者都应该创建只是为了让我对性能进行总结。

我现在得到的如下:

import pandas as pd
performance=pd.read_csv("https://www.dropbox.com/s/08kuxi50d0xqnfc/demo.csv?dl=1")

x=performance["idade"].sum()
y=performance["idade"].mean()

l = "Performance"
k = "LTFU"

def test(y):
return pd.DataFrame({'a':y, 'b':x})

test([l,k])

         a        b
0   Performance   x vector value here (it shows 1300, it is correct)
1   LTFU          y vector value here (it shows 1300, it is wrong, it should show 14.130434782608695 instead, according to the instruction of y vector)

您可以将上述代码复制并粘贴到您的 python IDE 并进行测试,然后将您的解决方案返回给我。 请根据我的需要向我展示一个包含表格结果的示例。

【问题讨论】:

  • 我的文字在这里被扭曲了。我正在发布屏幕截图
  • 你想做什么?您是否尝试以相同的格式保存为 CSV / txt?或者您是否想总结此数据框以供重用?
  • @Deena,我正在尝试用新变量来总结这个数据框。我想要的是从数据集中的另一个变量中计算这两个值。我想获得另一个计算生成的新值。请注意,csv 数据集中不存在 Perfomance 和 LTFU。它们是刚刚创建的新变量,用于总结我想要的。
  • 我很困惑test([l,k]) 返回DataFrame。那么需要将其写入文件吗?或者需要从csv - Performance 1300 ____________________ LTFU 60 创建另一个DataFrame,将其添加到test([l,k]) 并回写?
  • 是的,耶斯瑞尔。我需要根据我上面的函数创建另一个表(或任何名称的数据框),其中包含正确的性能值 1300,并且还必须包含 LTFU 值(不能为 1300,因为生成此值的函数与性能不同) .收到了吗?

标签: python function pandas crosstab


【解决方案1】:

您需要将输出分配给DataFrame,然后通过DataFrame.to_csv 写入文件:

l = "Performance"
k = "LTFU"

#changed input to 2 scalar values
def test(l1,k1):
    #changed a to list [l1, k1]
    #changed b to list [x, y]
    return pd.DataFrame({'a':[l1, k1], 'b':[x, y]})

df1 = test(l,k)
print (df1)
             a            b
0  Performance  1300.000000
1         LTFU    14.130435
df1.to_csv('file.csv', index=False, header=None, sep=' ')

【讨论】:

  • 您的代码写入 .csv 并给出与向量 y 公式相同的错误结果。我不想将输出写入 .csv。我只想要那个简单的表作为输出,但您需要更正以使 y 值正确并且不复制 x 向量公式。有没有人明白我想要什么,请帮助我!我需要该表输出在 DASH python Dashboard 中。
  • @MGB.py 我没什么问题。 1.df1 = test([l,k])print(df1)。这将创建数据框,(表)从demo.csv 的数据生成。需要做什么?只显示?或者是其他东西? 2.为什么df1的值不正确?如果demo.csv 仅包含来自问题的数据,那么预期的输出是什么? (我看不到文件中的所有数据,所以我尝试简化它)。 3. DASH python Dashboard的输入是什么?数据框?字典?还有什么?请耐心等待,我会尽力帮助你。但是你的想法和我的想法不同,所以我们似乎并不了解对方。谢谢。
  • 我正在编辑向您展示所有演示数据集的问题,以便我们使用相同的语言。等等。
  • @MGB.py 当然。我的主要问题是为什么 df1 = test([l,k]) print(df1) 不是您的预期输出。因为第0、1列和a、b第一行?还是别的什么?
  • 所以你忘记了你之前做了什么。它发生了!好的。谢谢。
【解决方案2】:

您的要求不符合 pandas 数据框的定义,您已经有了值,所以您可以通过其他方式使用输出

【讨论】:

  • 看来你没有理解我的担心。昨天我编辑了我的问题,让你更清楚。 您已经有了这些值,所以您可以通过其他方式使用输出 - 哪些值?上表生成的第二个低于 1300 的值不应出现在那里,它是上述 1300 的复制,根据我创建的函数(公式)是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多