【问题标题】:Is there any function to create pairing of values from columns in pandas是否有任何功能可以从熊猫中的列中创建值对
【发布时间】:2020-05-08 16:12:00
【问题描述】:

我必须将特定列中的值配对,例如 3 2 2 4 2 2 到 [3,2][2,2][2,4][4,2][2,2]数据集。

预期输出

[[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]] 每一行在单独的列中,例如 Pair 1 , Pair 2 ,Pair 3 .. ..

content = pd.read_csv('temp2.​​csv')

df = ([内容], columns=['V2','V3','V4','V5','V6','V7']) def get_pairs(x): arr = x.split(' ') 返回列表(map(list, zip(arr,arr[1:])))

df['pairs'] = df.applymap(get_pairs) df

【问题讨论】:

  • 请分享您尝试过的代码。
  • content = pd.read_csv('temp2.​​csv') df = ([content], columns=['V2','V3','V4','V5','V6', 'V7']) def get_pairs(x): arr = x.split(' ') return list(map(list, zip(arr,arr[1:]))) df['pairs'] = df.applymap( get_pairs) df

标签: python-3.x pandas csv dataframe data-science


【解决方案1】:

IIUC,你可以使用列表推导和zip

# Setup
df = pd.DataFrame([3, 2, 2, 4, 2, 2], columns=['col1'])

[[x, y] for x, y in zip(df.loc[:, 'col1'], df.loc[1:, 'col1'])]

或者使用maplist构造函数:

list(map(list, zip(df.loc[:, 'col1'], df.loc[1:, 'col1'])))

[出]

[[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]]

或者,如果您的数据是这样构造的,您可以将applymap 与您自己的函数一起使用:

# Setup
df = pd.DataFrame(['3 2 2 4 2 2', '1 2 3 4 5 6'], columns=['col1'])

#           col1
# 0  3 2 2 4 2 2
# 1  1 2 3 4 5 6

def get_pairs(x):
    arr = x.split(' ')
    return list(map(list, zip(arr, arr[1:])))

df['pairs'] = df.applymap(get_pairs)

[出]

          col1                                     pairs
0  3 2 2 4 2 2  [[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]]
1  1 2 3 4 5 6  [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]

【讨论】:

  • 是否可以使用 n 行的 for 循环
  • @P_data 不确定我是否理解问题?
  • 6列300万行数据集如何迭代它有什么功能
  • 您能否为您的数据框添加一个具有代表性的小示例,并为您的问题提供预期输出?
  • 输出我想要成对的值 [[3, 2], [2, 2], [2, 4], [4, 2], [2, 2]] 从每一行到一个单独的新列
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2022-06-22
  • 2020-03-22
  • 2023-04-02
相关资源
最近更新 更多