[英]How to build a statement to perform a groupby operation during runtime on a Pandas DataFrame?
我有一个 Pandas DataFrame dfs
和一个列表headers
列表headers
在运行时被分配了 DataFrame dfs
的列名。
例如,让我们考虑使用dfs
的列名分配列表:
["Information_type", "Interface", "Type_of_Interface", "Connection_Mechanism"]
我想在 DataFrame dfs
上执行以下groupby
和agg
操作,而无需明确提及 groupby 操作中的列名,即"Information_type": " ".join
”.join, "Interface": " ".join
:“”.join, "Type_of_Interface": " ".join
, "Connection_Mechanism": " ".join
:
dfs[0]=dfs[0].groupby("grp").agg({"Information_type": " ".join, "Interface": " ".join, "Type_of_Interface": " ".join, "Connection_Mechanism": " ".join})
基本上在运行时将"Information_type": " ".join, "Interface": " ".join, "Type_of_Interface": " ".join, "Connection_Mechanism": " ".join
写入上述行。
如果这样的事情是可能的,那就太好了,否则我将不得不手动编辑列名并为每个表执行groupby
和agg
操作!
感谢你的帮助。 提前致谢!
IIUC 这就是你想要的:
#setup
df = pd.DataFrame({'a':np.random.randint(0,5,25),
'b':np.random.randint(0,5,25),
'c':np.random.randint(0,5,25),
'd':np.random.randint(0,5,25)}, dtype = str)
cols = ['b','c']
df.groupby('a').agg({col: " ".join for col in cols})
Output
b c
a
0 0 0 3 3 4 2 3 3 3 4 0 4 3 2
1 2 4 1 2 1 3 0 2 1 3
2 0 0 4 2 1 3 1 3
3 2 2 4 1 3 0 3 1 1 1 2 0
4 4 2 0 2 0 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.