python - 使用熊猫切片和连接?
问题描述
到目前为止,我的努力是微乎其微的。事实上,我不知道用熊猫来处理它。
我得到了一个偶数和奇数的列表,我需要拆分列表并将其粘贴到相邻的列中,并对列表执行连接命令。
for example my list reads:
odd even
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
所以我将列完全拆分为两列并使用 excel concatenate 命令连接
Expected result:
odd-odd even-even
111 212
313 414
515 616
717 818
919 1020
帮助!
最小的工作代码:
import pandas as pd
list2=[1,3,5,7,9,11,13,15,17,19]
df = pd.DataFrame((list2), columns=['odd'])
df = df.astype(str).groupby(df['odd'].astype(str).str[-1]).agg({"odd": lambda x: "".join(x)}).reset_index(drop=True)
print (df)
输出得到:
odd
0 111
1 313
2 515
3 717
4 919
但是当我向列表示例添加更多值时: list2=[1,3,5,7,9,11,13,15,17,19,21,23,25,27] 我得到
odd
0 11121
1 31323
2 51525
3 71727
4 919
我正在寻找的是:
115
317
519
721
923
1125
1327
这样做。感谢大家的努力。
import pandas as pd
list2=[1,3,5,7,9,11,13,15,17,19,21,23,25,27]
df = pd.DataFrame((list2), columns=['odd'])
n2 = len(df)
n1 = int(n2/2)
df2 = pd.DataFrame()
df2['odd-odd'] = df.odd[0:n1].astype(str).to_numpy()+df.odd[n1:n2].astype(str).to_numpy()
print (df2['odd-odd'])
解决方案
试试这个,转换所有列以string
提取最后一个元素作为参考groupby
,应用aggregate
& join
。
(
df.astype(str).
groupby(df['odd'].astype(str).str[-1]).
agg({"odd": lambda x: "".join(x), "even": lambda x: "".join(x)}).
reset_index(drop=True)
)
odd even
0 111 212
1 313 414
2 515 616
3 717 818
4 919 1020
推荐阅读
- django - 尝试迭代模型查询集时,Python Django 'TypeError: object is not iterable'
- .htaccess - 如何更正 htaccess 重定向到 https
- java - 如何在 STS 4 中创建 Spring MVC 项目?
- javafx - JavaFX如何使我的文本加粗/下划线并将它们添加到单独的轮廓框/正方形中?
- google-app-engine - 如何使用“gcloud builds”进行数据库迁移
- javascript - 在 MediaWiki 扩展中加载 js 不起作用
- python - Seaborn 调色板:如何选择以哪个部分为中心(例如,绘图的哪一端是红色,哪一端是蓝色)?
- reactjs - React Native - StyleSheet.absoluteFill() 和 StyleSheet.absoluteFillObject() 有什么区别?
- html - 用不同的链接颜色覆盖 CSS
- eclipse - 驱动器映射更改后的 Maven Eclipse 错误