使用 spyder 从 2D 数据帧中提取并根据 2D 数据帧中的值位置向 1D 数据帧添加值
Posted
技术标签:
【中文标题】使用 spyder 从 2D 数据帧中提取并根据 2D 数据帧中的值位置向 1D 数据帧添加值【英文标题】:Extracting from a 2D dataframe and adding value to 1D dataframe based on value locations in the 2D dataframe using spyder 【发布时间】:2021-09-20 03:56:54 【问题描述】:我有两个数据框
df1 = pd.DataFrame(
1: 'A': 237, 'B': 435, 'C': 900,
2: 'A': 543, 'B': 313, 'C': 1200,
3: 'A': 300, 'B': 150, 'C': 1600,
4: 'A': 256, 'B': 635, 'C': 900,
5: 'A': 343, 'B': 847, 'C': 1200,
6: 'A': 122, 'B': 321, 'C': 1600
)
df2 = pd.DataFrame('well': ['A1', 'A2', 'A3', 'B1', 'B2', 'B3'])
我想创建一个新的数据框:
df3 = pd.DataFrame(
'value': 'A1': 237, 'A2': 543, 'A3': 300, 'A4': 256,
'A5': 343, 'A6': 122, 'B1': 435, 'B2': 313,
'B3': 150, 'B4': 635, 'B5': 847, 'B6': 321,
'Time': 'A1': 900, 'A2': 1200, 'A3': 1600, 'A4': 900,
'A5': 1200, 'A6': 1600, 'B1': 900, 'B2': 1200,
'B3': 1600, 'B4': 900, 'B5': 1200, 'B6': 1600
)
我的实际数据帧比这个大,并且总是有不同的值,所以我想要一种方法来简化它,以便它可以在任何相同格式的数据帧上工作。
【问题讨论】:
如果你能理解和定义逻辑,99% 的时间你都可以自己做 【参考方案1】:让我们尝试T
+ melt
去长格式,然后用Index.map
压缩索引:
df3 = (
df1.T.melt(id_vars='C', ignore_index=False) # Long Form saving C
.set_index('variable', append=True) # Add variable to the index
.rename(columns='C': 'Time') # Rename C column to time
.reindex(columns=['value', 'Time']) # re-order columns
)
df3.index = df3.index.swaplevel(0, 1).map(lambda s: ''.join(map(str, s)))
df3
:
value Time
A1 237 900
A2 543 1200
A3 300 1600
A4 256 900
A5 343 1200
A6 122 1600
B1 435 900
B2 313 1200
B3 150 1600
B4 635 900
B5 847 1200
B6 321 1600
【讨论】:
以上是关于使用 spyder 从 2D 数据帧中提取并根据 2D 数据帧中的值位置向 1D 数据帧添加值的主要内容,如果未能解决你的问题,请参考以下文章
如果它们之间的欧几里得是最低的,则将一个数据帧中的 2D 点替换为另一个数据帧中的 2D 点