pandas - python pandas在组合列上融化
问题描述
我有一个这样的数据框。我有常规字段直到“状态”然后我将有拖车(3 列 tr1* 代表 1 个拖车)我想将这些拖车转换为行。我尝试了融化功能,但我只能使用 1 个拖车柱。请看下面的例子你可以理解
Name number city state tr1num tr1acct tr1ct tr2num tr2acct tr2ct tr3num tr3acct tr3ct
DJ 10 Edison nj 1001 20345 Dew 1002 20346 Newca. 1003. 20347. pen
ND 20 Newark DE 2001 1985 flor 2002 1986 rodge
我期待这样的输出。
Name number city state trnum tracct trct
DJ 10 Edison nj 1001 20345 Dew
DJ 10 Edison nj 1002 20346 Newca
DJ 10 Edison nj 1003 20347 pen
ND 20 Newark DE 2001 1985 flor
ND 20 Newark DE 2002 1986 rodge
解决方案
您可以通过重命名列和位并应用 pandas wide_to_long 方法来实现此目的。下面是产生所需输出的代码。
df = pd.DataFrame({"Name":["DJ", "ND"], "number":[10,20], "city":["Edison", "Newark"], "state":["nj","DE"],
"trnum_1":[1001,2001], "tracct_1":[20345,1985], "trct_1":["Dew", "flor"], "trnum_2":[1002,2002],
"trct_2":["Newca", "rodge"], "trnum_3":[1003,None], "tracct_3":[20347,None], "trct_3":["pen", None]})
pd.wide_to_long(df, stubnames=['trnum', 'tracct', 'trct'], i='Name', j='dropme', sep='_').reset_index().drop('dropme', axis=1)\
.sort_values('trnum')
输出
Name state city number trnum tracct trct
0 DJ nj Edison 10 1001.0 20345.0 Dew
1 DJ nj Edison 10 1002.0 NaN Newca
2 DJ nj Edison 10 1003.0 20347.0 pen
3 ND DE Newark 20 2001.0 1985.0 flor
4 ND DE Newark 20 2002.0 NaN rodge
5 ND DE Newark 20 NaN NaN None
推荐阅读
- html - Angular Bootstrap 4 Navbar 不会切换和 navbar-dark 问题
- c# - 不能画一条简单的线
- html - 放置 div 块
- spring - Spring Security:自定义 UserDetails 和 GrandtedAuthority 实现
- asp.net-mvc-5 - 为什么我不应该使用 MVC Jsonresult 而不是 apicontroller get 方法
- cmd - 创建用于切换 python 版本的 *.bat 文件
- python - 处理一个 Numpy 数组的极端情况以进行迭代
- java - JNI 代码返回字符串但得到错误 java.lang.UnsatisfiedLinkError: com.package.openGeoDb()Ljava/lang/String;
- python - 如何平滑 LSTM 输出
- reactjs - 无法缩放图像以适合屏幕。尝试了 resizeMode 和 aspectRatio。如何缩放以适应?