从另一个Python文件导入单个pandas数据框列

问题描述 投票:0回答:3

我正在尝试将不同文件中的其他数据框列导入到一个文件中。

假设 df1、df2 和 df3 分别位于不同的 .py 文件中,但文件保存在同一文件夹中。

即 df1 保存在 df1.py 中 df2 保存在 df2.py 中 df3 保存在 df3.py 中

我试图弄清楚如何将 df2 和 df3 中的列导入到 df1 (有 7 行)中,即使所有数据帧具有不同的行数。

NaN 行应表示为 - (即破折号“-”)

df1 = pd.DataFrame()

df1['A'] = (1,22,13,41,2,56,79)
df1['B'] = ('B','S','S', 'S', 'S', 'B', 'B')
df1['C'] = (1.02, 1.01, 1.44, 1.05, 1.05, 1.12, 1.22)



df2 = pd.DataFrame()


df2['D'] = (11,65,8,34,56,18,91,34,89,35,3,9,15)
df2['E'] = ('E','R','Y', 'N', 'X', 'T','Y', 'N', 'X', 'T', 'D', 'T', 'D')
df2['F'] = (1.02, 1.01, 1.44, 1.05,1.02, 1.01, 1.44, 1.05, 1.05, 1.12, 1.22, 1.12, 1.22)

df3 = pd.DataFrame()


df3['G'] = (1,22,13)
df3['H'] = ('S','S', 'S')
df3['I'] = (1.05, 1.05, 1.12)

打印下面是我希望 df1 在导入后的样子

df1 = pd.DataFrame()

df1['A'] = (1,22,13,41,2,56,79)
df1['B'] = ('B','S','S', 'S', 'S', 'B', 'B')
df1['C'] = (1.02, 1.01, 1.44, 1.05, 1.05, 1.12, 1.22)
df1['D'] = (11,65,8,34,56,18,91)
df1['E'] = ('E','R','Y', 'N', 'X', 'T','Y')
df1['F'] = (1.02, 1.01, 1.44, 1.05,1.02, 1.01, 1.44)
df1['G'] = (1,22,13, '-', '-', '-', '-')
df1['H'] = ('S','S', 'S', '-', '-', '-', '-')
df1['I'] = (1.05, 1.05, 1.12, '-', '-', '-', '-')

print(df1)
python pandas dataframe import sys
3个回答
0
投票

使用 -

print(pd.concat([df1, df2, df3], axis=1).dropna(subset=['A', 'B', 'C']).fillna('-'))

输出

      A  B     C   D  E     F   G  H     I
0   1.0  B  1.02  11  E  1.02   1  S  1.05
1  22.0  S  1.01  65  R  1.01  22  S  1.05
2  13.0  S  1.44   8  Y  1.44  13  S  1.12
3  41.0  S  1.05  34  N  1.05   -  -     -
4   2.0  S  1.05  56  X  1.02   -  -     -
5  56.0  B  1.12  18  T  1.01   -  -     -
6  79.0  B  1.22  91  Y  1.44   -  -     -

0
投票

你可以尝试:

import pandas as pd
import df1, df2, df3 # import files df1.py, df2.py and df3.py
print(pd.concat([df1.df1, df2.df2.iloc[:df1.df1.shape[0]], df3.df3], axis=1, sort=False).fillna('-'))

结果:

    A  B     C   D  E     F   G  H     I
0   1  B  1.02  11  E  1.02   1  S  1.05
1  22  S  1.01  65  R  1.01  22  S  1.05
2  13  S  1.44   8  Y  1.44  13  S  1.12
3  41  S  1.05  34  N  1.05   -  -     -
4   2  S  1.05  56  X  1.02   -  -     -
5  56  B  1.12  18  T  1.01   -  -     -
6  79  B  1.22  91  Y  1.44   -  -     -

0
投票

我对此也是新手。但我不认为你想要做的事情是可能的,因为如果这些 df 位于单独的 py 文件中,(如果我没记错的话)df 存储在内存中,一旦你关闭文件,内存将不记得它。

我认为最好将其导出为 CSV 或其他内容,然后将所需内容导入到单独的 PY 文件中。

© www.soinside.com 2019 - 2024. All rights reserved.