【问题标题】:pandas - unnest list and show in csv each array value in a cell on column basispandas - unnest 列表并在 csv 中按列显示单元格中的每个数组值
【发布时间】:2021-12-31 13:45:26
【问题描述】:

我现在正在准备一个数据集,我需要它具有某种格式,例如:

Hand Pose
No Seating Back
Yes Seating Back
No Seating Back
Yes Seating Back
No Seating Back
Yes Seating Back

但是,目前它正在生产

0
Hand ['No', 'No', 'No', 'No', 'No', 'No', 'No']
Pose ['Seating Back', 'Seating Back', 'Seating Back']

如您所见,数组中的值存储在一个单元格中,而我需要将其取消嵌套在一个值占用一个单元格的位置。

我的代码:

array_all = {'Hand': alldata, 'Pose': keypoints}
df = pd.Series(array_all)

# Keypoint detection
df.to_csv('test.csv',
          mode='w',
          header=True,
          index=True)
df.transpose()

为了给对象提供上下文,这里是其中一个对象的 sn-p

for data_point in results.face_landmarks.landmark:
    if 0.6 <= data_point.x < 0.8:
        face_position.append('Straight')
    else:
        face_position.append('Angled')

所有数组都以这种方式追加。

【问题讨论】:

  • 感谢您添加实际文本。但是,现在"Face Pose" 不见了
  • 锯齿状数据的理想输出是什么?您要填充空字符串或其他标记值,还是省略缺失数据的行?
  • 锯齿状数据不应该有任何值,它可以将自己呈现为一个空字符串
  • 这能回答你的问题吗? Creating dataframe from a dictionary where entries have different lengths。对我有用的是df = pd.DataFrame.from_dict(array_all, orient='index').T(来自dezzan's answer),它用None填充,它被转换为CSV中的空字符串。

标签: python pandas csv


【解决方案1】:

您正在创建 Series 而不是 DataFrame。您想要创建一个DataFrame

改变

df = pd.Series(array_all)

df = pd.DataFrame(array_all)

编辑:如果由于数组长度不相等而无法创建 DataFrame,请向它们添加空字符串,直到它们都与最长的一样长,如下所示:

array_all = {'Hand': alldata, 'Pose': keypoints, 'Face Pose': face_position}

# Pad the arrays with '' so that they are all the same length
max_size = max([len(array) for array in array_all.values()])
for array in array_all.values():
    array.extend([''] * (max_size - len(array)))

df = pd.DataFrame(array_all)

或者,更好的解决方案:

array_all = {'Hand': alldata, 'Pose': keypoints, 'Face Pose': face_position}
array_all = {k: pd.Series(v) for k, v in array_all.items()}
df = pd.DataFrame(array_all)

最后的 sn-p 部分归功于 @Jeff's answer here

【讨论】:

  • 你为什么使用空字符串而不是说,None
  • 我假设 Dinuli 希望行为空。我假设如果我使用np.nanNone,它们将在CSV 文件中显示为NaNNone。我错了吗?
  • 谢谢您,您的解决方案在一定程度上有效,可以在列中制作,但是,我仍然遇到取消嵌套数组的问题,其中数组的一个值每个填充一个单元格,而不是整个数组填充一个单元格(CSV 中的单元格,如上面问题的底部所示)。你对此有什么想法吗?谢谢!
  • 你能分享一个截图链接吗?
  • 围绕链接这个链接其他问题是非常规的,但在这里没关系。试试@Corralien 的解决方案。
猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 2015-11-12
  • 2021-06-01
  • 2017-02-08
  • 2020-11-02
  • 1970-01-01
相关资源
最近更新 更多