熊猫:在数据帧之间复制一些值

时间:2018-03-20 02:57:07

标签: python pandas copy

我有两个数据框,分别叫做Old和New。 Old有96行,New有48行。我想取一列Old,比如public static void main(String[] args) { try{ WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().window().maximize(); driver.navigate().to("https://www.amazon.in/"); List<WebElement> links = driver.findElements(By.tagName("a")); System.out.println("Number of links : " + links.size()); for(WebElement e : links) { String linkText = e.getAttribute("href"); System.out.println("Link -->>" +linkText); if(linkText!=null && !linkText.isEmpty()) { HttpPost post = new HttpPost(linkText); HttpClient client = HttpClientBuilder.create().build(); HttpResponse res = client.execute(post); String s = res.getStatusLine().toString(); if(s.contains("404")) { System.out.println("Navigated"); //your code to handle logic } else { //your code to handle logic with other response code } } } } catch (Exception e) { System.out.println(e.getStackTrace()); } } 并将其拆分为New列中的两列,比如['Values']['First']。因此,对于一个简单的例子,有6行开始;从:

['Second']

   Values
1    10
2    20 
3    30
4    40
5    50
6    60

我认为这应该很简单,但我无法做到,因为索引需要改变。我只是想复制值,如你所见。

这怎么做得最好?

2 个答案:

答案 0 :(得分:1)

您可以使用重塑:

pd.DataFrame(df.values.reshape(-1,2, order='F'), columns=['First','Second'])
Out[12]: 
array([[10, 40],
       [20, 50],
       [30, 60]], dtype=int64)

答案 1 :(得分:1)

使用numpy中的split,您可以分为两种或其他尺寸,并将它们与hstack合并,以形成新的dataframe

import numpy as np
import pandas as pd

df = pd.DataFrame({'Values': {1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}})
print(df)

输入数据帧:

   Values
1      10
2      20
3      30
4      40
5      50
6      60

现在,使用split(),然后使用hstack()

splits = np.split(df, 2)
result_df = pd.DataFrame(np.hstack(splits), columns=['First', 'Second'])
print(result_df)

结果:

   First  Second
0     10      40
1     20      50
2     30      60

不使用中间splits变量,您可以尝试:

result_df = pd.DataFrame(np.hstack(np.split(df, 2)), columns=['First', 'Second'])