等价物';价差';和';聚集';python/pandas中的R/tidyverse?

等价物';价差';和';聚集';python/pandas中的R/tidyverse?,python,pandas,Python,Pandas,比如说。 数据A: 我想把它“收集”到这个: y gender value 1 female 2 1 male 3 4 female 5 4 male 6 在R中很容易。python pandas呢?您应该尝试熔化,在给定的数据中,相反(扩散版本称为cast),这些熔化和铸造函数与R的重塑2非常相似: import pandas as pd pd.melt(dt, id_vars="y") 其中dt是您的输入表 输出: #y variable value #1 fema

比如说。 数据A:

我想把它“收集”到这个:

y gender value
1 female 2
1 male 3
4 female 5
4 male 6

在R中很容易。python pandas呢?

您应该尝试熔化,在给定的数据中,相反(扩散版本称为cast),这些熔化和铸造函数与R的重塑2非常相似:

import pandas as pd    
pd.melt(dt, id_vars="y")
其中dt是您的输入表

输出

#y  variable      value
#1  female          2
#4  female          5
#1  male            3
#4  male            6
试试熊猫的融化法(pd.melt)

使用id\u vars定义主聚集/熔化变量value\u vars定义您的值变量var_name定义值变量的标题;和value\u name定义实际值的标题

看看这个例子:

#Import pandas module
import pandas as pd

# Define the dataframe
DF = pd.DataFrame({'y': [1,4], 'female': [2,5], 'male': [3,6]})

# Gather/melt the data frame
pd.melt(DF, id_vars='y', value_vars=['female', 'male'],var_name='gender',
value_name='value')
这就是您的输出的样子:

    y   gender  value
0   1   female  2
1   4   female  5
2   1   male    3
3   4   male    6

收集

df1=df.melt(id_vars='y')
df1
价差

df2=df1.pivot(index='y', columns='variable')
df2
这个怎么样:

从数据导入f
从datar.tibble导入tribble
从datar.tidyr导入pivot\u
df=tribble(
f、 y,f。女性,f。男性,
1,   2,        3,
4,   5,        6
)
轴长(df,[f.女性,f.男性],姓名至=“性别”)
#y名称值
#0 1女性2
#1 4女5
#2 1男3
#3 4男6

我是这个包裹的作者。如果您对使用它有任何疑问,请随时提交问题。

我已经找到您了。但仍然存在一个问题。假设有很多变量:x1,x2…x50,y1,y2。然后我将y1和y2收集到一列中。代码是:pd.melt(dt,id_vars=['x1','x2'…'x50'],value_vars=['y1','y2']。id_变量的输入太多,在R中不是这样的。您有更舒适的方法输入id_变量吗?@Bin您可以使用melt和cast执行所有操作,这些都是旧函数,当您提出问题时,请您询问所有问题,如果您的问题是R use data.table中的性能,也如建议的那样。请参阅此链接:而且,您也没有如果必须键入,可以使用df.columns.tolist()保存列名,将其保存到separate对象中并执行操作
df2=df1.pivot(index='y', columns='variable')
df2