python - Python Pandas:将具有不同长度的列表作为一行分配给熊猫数据框
问题描述
嗨,我有一个这样的数据框:
ColA ColB
a 0
b 1
c 2
我想将 list_a = [ 0,1 ] 附加到 A == a 列并将 list_c = [ 0, 1, 2 ] 附加到 A == c 列。最终应该是这样的:
ColA ColB
a 0 0 1 Nan
b 1 Nan Nan Nan
c 2 0 1 2
我怎样才能做到这一点?谢谢你。
解决方案
您可以将您的构建lists
成 aDataFrame
和concat
它们:
(pd.concat([df.set_index('ColA'),
pd.DataFrame([list_a, list_c], index=['a', 'c'])],
axis=1).rename_axis('ColA').reset_index())
[出去]
ColA ColB 0 1 2
0 a 0 0.0 1.0 NaN
1 b 1 NaN NaN NaN
2 c 2 0.0 1.0 2.0
或者按照@QuangHoang 的建议,使用DataFrame.merge
:
df.merge(pd.DataFrame([list_a, list_c], index=['a', 'c']),
left_on='ColA',
right_index=True,
how='left')
推荐阅读
- python - 如何在其他函数中调用 Row、Header 值 - Python/Airflow/Redshift
- react-native - 从异步函数 react-native 获取未定义
- java - 如何解决 JAXB 和 Java POJO 的问题?
- asp.net-core - 为什么不能访问静态文件?
- url - IIS web.config:将 URL 文件重写为子域
- firebase - 如何将从 Firebase 读取的日期显示为 ion-datetime 元素
- c# - NetTopologySuite.Core 1.15.3 和距离单位
- json - 以有效的方式替换整个 JSON python 中的“key”名称以获取批量数据
- exception - Dart 中的 Java 'throws' 关键字
- excel - VBA:Worksheet_Change - Target.Address 与使用相交