在数据框中合并两个熊猫系列而不显式使用键
Posted
技术标签:
【中文标题】在数据框中合并两个熊猫系列而不显式使用键【英文标题】:merge two pandas series in a datagrame without explicitly using keys 【发布时间】:2021-09-22 14:09:27 【问题描述】:我有两个类“pandas.core.series.Series”:
“距离”
-9999 110160.551216
-9999.1 121535.209511
-9999.2 124808.195632
-9999.3 132015.091440
-9999.4 129312.118880
-9999.5 119686.351986
-9999.6 110988.442182
-9999.7 104297.914620
dtype: float64
和“数据”
-9999 0.0
-9999.1 1.6
-9999.2 0.0
-9999.3 NaN
-9999.4 0.0
-9999.5 0.0
-9999.6 NaN
-9999.7 NaN
Name: 4, dtype: float64
我想将它们合并到一个数据框中以删除 nan 列。 我尝试了不同的方法:
new = pd.concat([dist, data],axis=1)
但这只会创建长变量。
new = pd.concat([dist, data],axis=0)
但这会创建一个长行:
,-9999,-9999.1,-9999.2,-9999.3,-9999.4,-9999.5,-9999.6,-9999.7,-9999,-9999.1,-9999.2,-9999.3,-9999.4,-9999.5,-9999.6,-9999.7
0,110160.55121567169,121535.20951103275,124808.19563190002,132015.0914399207,129312.11887963412,119686.35198568225,110988.44218156513,104297.91462028676,0.0,1.6,0.0,,0.0,0.0,,
这是我所期望的:
-9999, -9999.1, -9999.2, -9999.3, -9999.4, -9999.5, -9999.6, -9999.7
110160.551215672, 121535.209511033, 124808.1956319, 132015.091439921, 129312.118879634, 119686.351985682, 110988.442181565, 104297.914620287
0,1.6,0,,0,,,0
这应该允许我根据 nan 删除一些列。 谢谢
【问题讨论】:
【参考方案1】:试试:
(pd.concat([dist, data],axis=1)
.reset_index().T
.replace('Na',0).to_csv('filename.csv',index=False,header=False))
或
(dist.reset_index().astype('index':'float')
.merge(data.reset_index().astype('index':'float'),on='index').T
.replace('Na',0)
.to_csv('filename.csv',index=False,header=False))
【讨论】:
它似乎不起作用。它仍然是一个长字符串,但它分为两行。文件名是正确的,但不是新的数据框。如果我把 new = pd.concat([dist, data],axis=1).reset_index().T 我还有一个只有 index=0 和第 0 列的系列 是的,两者都有。我也尝试使用 dfr_dist = pd.DataFrame(), dfr_dist['1'] = dist, dfr_data = pd.DataFrame() dfr_data['2'] = data 将它们转换为数据帧,但我有同样的问题。 @diedroreset_index()
正在将它们转换为数据框...请尝试使用您的系列(您的初始数据)运行上述方法
好的。我会尝试。也许问题在于两个数据框都是函数的参数,这可能会改变一些东西。为了不引起误解,我没有发布完整的代码,但我可以发布它,你怎么看?
@diedro 可以先试试如果不行再发帖以上是关于在数据框中合并两个熊猫系列而不显式使用键的主要内容,如果未能解决你的问题,请参考以下文章
合并两个具有共同值的熊猫数据框,这些数据框在一个数据框中显示为列,而在另一个数据框中显示为行