【发布时间】:2020-06-19 10:23:53
【问题描述】:
我有一个 78 列乘以 400,000 列的 CSV 文件。一个简化的例子如下: '''
df=pd.DataFrame({'X':[1,2,3,4],
'Y':[0,0,1,1],
'Z':[0,0,0,0],
'Location':[1,2,3,4],
'Data1':[123,645,324,876]
'Data2':[733,347,547,764]
'Data3':[245,846,435,099]
'Data4':[748,664,222,810]}
'''
在尝试使用列的键时摆脱 loc 键弃用的东西: '''
headers=df.keys().tolist()
df=df.reindex(columns=headers)
'''
我需要在旋转“Data1”-“Data4”时为“Location”的每个值生成一个重复 X、Y、Z 的输出。
似乎melt功能对此很有用,
'''
df2=pd.melt(df, id_vars=['X','Y','Z'], value_vars=['Location', 'Data1', 'Data2', 'Data3', 'Data4'], value_name='Measurements')
''' 在数学转换之前得到我需要的数据格式。 '''
X Y Z variable Measurements
1 0 0 Data1 123
2 0 0 Data1 645
... (Many Rows Later)
4 1 0 Data4 810
'''
现在我需要做这个问题所涉及的实际数学运算
我如何拥有来自 Data1-Data48 的 48 种类型的变量。我需要通过 Data 字段来修改 Z 字段(我正在为一些地质建模/可视化制作点云)。我能想到的唯一方法是拥有 48 个 if 语句并在循环中评估每个语句并将适当的偏移量添加到 Z 列...
现在,这似乎效率低下,必须有另一种方法,我试图用谷歌搜索我的方法,但真的一点运气都没有。
【问题讨论】:
-
使用字典并使用键查找值。