【发布时间】:2020-03-12 01:34:05
【问题描述】:
我有一个包含各种网格站及其与其他网格站连接的数据集,我需要从这些数据中绘制出传输线。它看起来像这样(原始数据框中大约有 100 行左右):
>df
Name Latitude Longitude Link 1 Link 2 Link 3 Link 4 Link 5
0 A 34.466667 72.200000 B NaN NaN NaN NaN
1 B 33.766667 72.366667 A C D NaN NaN
2 C 33.761500 72.434000 B E G NaN NaN
为了让事情变得更简单,我创建了一个新的数据框,其名称如下:
>datax
Latitude Longitude Link 1 Link 2 Link 3 Link 4 Link 5
Name
A 34.466667 72.200000 B NaN NaN NaN NaN
B 33.766667 72.366667 A C D NaN NaN
C 33.761500 72.434000 B E G NaN NaN
我正在使用每个电网站的“链接”来绘制线路,这些线路向我显示了它所连接的其他电网站。由于每个网格站都显示其与其他网格站的连接,为了正确映射线,我需要消除重复项,例如,如果我通过迭代数据框的第一列来绘制 A 和 B 之间的第一条线,我需要消除此链接(即删除第二行 Link 1 列中的“A”)在第二行中,因此当我遍历第二行时该行不会重复。为此,我尝试使用替换,
datax.loc[datax.iloc[0]['Link 1']].replace(datax.index[0],np.nan)
这个 sn-p 确实替换了链接并放入了 nan 但没有在原始数据帧中执行它,所以我尝试了内置参数 inplace,
datax.loc[datax.iloc[0]['Link 1']].replace(datax.index[0],np.nan, inplace=True)
但这似乎也不行。我有点像新手编码员,所以很抱歉,但有谁知道我做错了什么,以及如何纠正这个错误,以及是否有另一种更简单的方法来解决这个问题。
编辑:
当我运行上面的代码 sn-p 时,我希望数据框第二列中的“链接 1”变为 NaN。
>datax
Latitude Longitude Link 1 Link 2 Link 3 Link 4 Link 5
Name
A 34.466667 72.200000 B NaN NaN NaN NaN
B 33.766667 72.366667 Nan C D NaN NaN
C 33.761500 72.434000 NaN E G NaN NaN
问题是代码确实这样做了,但没有将其保存到数据帧中。由于我必须为原始数据帧执行数百次此过程,因此我需要将值保存到数据帧中,而不是每次都创建新值,这将是低效的地狱。
【问题讨论】:
-
如何使数据框可粘贴?你能在这里指导我吗?我认为 pd.read_clipboard() 可以很容易地完成这项工作
-
对不起,这是我的错误页面评论。你能提供一个你想要的输出示例吗?
-
我已经编辑了原始问题并添加了我需要的输出示例。希望它可以帮助您帮助我解决这个问题。
-
@HamzaWaheed 你在看这个吗?
datax.at['A', 'Link 1'] = np.NaN -
@davidbilla,对于 .at,我需要有准确的数据索引,而 replace 可以在列中找到值本身,这更加理想,因为数据可以位于任何“链接”处仅链接 1
标签: python python-3.x pandas dataframe