Python/Pandas: How to create a table of results with new variables and values calculated from an existing dataframe
我希望能够创建一个交叉表/表/数据帧(无论名称是什么),如下所示:
1 2 3 4 5
| ____________________
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)
____________________ |
请注意,性能和LTFU值是由应用于python中.csv数据集的函数生成的。.csv数据集中不存在performance和ltfu,应该创建这两个数据集,以便我对性能进行总结。
我现在得到的信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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) |
您可以将上述代码复制并粘贴到您的PythonIDE和测试中,然后将您的解决方案返回给我。请给我一个我想要的带有表结果的例子。
- 我的课文在这里被歪曲了。我正在发布一个屏幕
- 你想做什么?是否尝试使用相同的格式保存为csv/txt?或者您是在总结这个数据框架以便重用?
- @迪娜,我正在用新的变量总结这个数据框架。我想要的是从数据集中的另一个变量计算这两个值。我想得到由另一个计算生成的新值。请注意,在csv数据集中不存在perfomance和ltfu。它们只是为总结我想要的而创建的新变量。
- 我很困惑,test([l,k])返回DataFrame。所以需要写到文件中吗?或者需要从csv到Performance 1300 ____________________ LTFU 60创建另一个数据帧,将其添加到test([l,k])并写回?
- 是的,Jezrael。我需要创建另一个表(或数据帧,不管名称是什么),根据我上面的函数,它包含正确的1300的性能值,并且必须包含LTFU值(不能是1300,因为生成该值的函数与性能不同)。你明白了吗?
- @耶斯拉尔看了看我的版本,现在看起来很清楚了。
- 那么需要df1 = test([l,k])和df1.to_csv('file.csv', index=False, header=None)吗?
- test([l,k])生成一个我想要的表,但不会从y=performance["idade"]..mean()中获取值。它只给我带来x=performance["idade"]..sum()的正确值。
- @Jezrael,这个代码是什么:df1.to_csv('file.csv',index=false,header=none)????
- 不需要这样做,我只想创建这个带有性能和LTFU值的简单表。这些值必须根据数据集中存在的一些变量计算。只有这个!!!!我不知道为什么我不能很好地向你解释。对我来说,这看起来很简单。
- 好吧,为什么df1.to_csv('file.csv', index=False, header=None)不起作用?还是需要df1.to_csv('file.csv', index=False, header=None, sep=' ')?
- @耶斯拉利,对不起,我没有试过。好吧,我会试试看,然后告诉你,但我必须承认,我不知道我们是否要解决同样的问题。谢谢。
- @耶斯拉利,对不起,我没有试过。好吧,我会试试看,然后告诉你,但我必须承认,我不知道我们是否要解决同样的问题。谢谢。
- 好吧,我知道你需要把数据帧写进文件,对吗?
- 好像是这样。我对python不太熟悉,有些术语我不太熟悉。有时我只是在不知道自己所做的事情的真实名称或术语的情况下做事情。对不起。一旦我看到你的结果,我可以向你保证,如果我想要的话。非常感谢您的关注。
- @mgb.py-如果我的答案有帮助,不要忘记接受它-点击答案旁边的复选标记(v)将其从灰色变为填充。谢谢。
您需要将输出分配给DataFrame,然后由DataFrame.to_csv写入文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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向量公式。有没有人知道我想要什么,请帮帮我!我需要在dashpython仪表板中输出该表。
- @PY经理,我没什么问题。1。df1 = test([l,k])print(df1)。这将创建数据帧,(表)从demo.csv中的数据生成。需要做什么?只显示?或者别的什么?2。为什么df1中的值不正确?如果demo.csv只包含有问题的数据,那么预期的输出是什么?(我看不到文件中的所有数据,所以我尝试简化它)。三。Dashpython仪表板的输入是什么?Dataframe?字典?还有别的吗?请耐心点,我尽力帮你。但是你的想法和我的不同,所以我们似乎不理解对方。谢谢您。
- 我正在编辑向您显示所有演示数据集的问题,以允许我们使用相同的语言。等待。
- 当然可以。我有一个主要的问题,为什么df1 = test([l,k])print(df1)不是你的预期产出。因为列0、1和A、B是第一行?或是阴沉?
- 再次检查更新的问题,我已经分享了演示csv Dropbox的网址,并对下表发表了评论。谢谢。
- 无法在此处用@,@jazrael指定您的姓名,请立即检查问题。
- 请选中"编辑"。问题在起作用。
- 对不起,我不明白你的意思。检查什么?你解决我的问题了吗?
- 是的,功能有问题。
- 请检查一下,如果有什么不清楚的地方请告诉我。
- 哇,谢谢你的解决方案。我可以要求更多的只是定制桌子吗?我想删除字母"a"和"b",我想用粘贴代码到Dashpython仪表板上,数字"0"和"1"应该消失,对吗?你能做到吗?
- 我会和你分享我想要的定制桌子的图片。非常感谢你对我的问题有耐心。
- @PY经理-你认为Dash python dashboard怎么样?是这个还是别的什么?
- 检查这里的破折号:youtu.be/5bathin0htc
- Dash是python仪表板,类似于闪亮的r仪表板
- 不确定,如果可能的话
- 我给你的邮件发了一张桌上照片,请看。
- 查看stackoverflow.com/questions/8356501/…和table,并查看@tommasof建议的表。就像我想要的那样,谢谢
- 是的,有很多解决方案,你喜欢什么?
- 但最好的办法是用这个
- 不是因为我不想显示列名,只显示行名和值。-)
- @Mgb.py-hmmm,所以问题太广泛了。你需要HTML表格吗?或者别的什么?显然,是生成到csv或json的数据帧,然后csv或json将其他一些系统显示为python/pandas。
- 忘记了html、csv和json。我只想在python环境中生成jupyter notebook、dash和命令行,谢谢。
- dash已经与HTML相关,所以如果我能在核心python中做那个表,它应该很容易集成到dash中。
- 对不起,那我就不知道了,因为从来没有用过。它似乎没有在Python中实现(我找不到一些示例如何实现)。
- 我将与你分享一个完整的破折号命令模板,但你不需要它。如果您能够用python做一个表,那么它也应该以几乎相似的方式在dash中工作。
- 有趣的是,看看你对我在这篇文章中提出的几乎相似的问题的答案:stackoverflow.com/questions/36688022/…
- 噢,真是太棒了;)所以你得到了梭利昂;)从我这里,真的很有趣;d
- 您在此处给出了删除列名的解决方案:stackoverflow.com/questions/44917675/pandas delete column na‌&8203;me df.columns=['']*len(df.columns)
- 另一个技巧是:打印(df.to_字符串(header=false))
- 是的,没错;
- 所以你忘了你以前做过什么。它发生了!好啊。谢谢。
您的要求不符合熊猫数据帧的定义,您已经拥有这些值,因此您可以使用其他方式使用输出。
- 看来你不明白我的担心。昨天我把我的问题修改得更清楚了。您已经有了这些值,所以您可能可以使用其他方式使用输出-哪些值?上面生成的表上第二个低于1300的值不应该出现在这里,它是上面1300的复制,根据我创建的函数(公式),这是正确的。