pandas 如何从文本文件中的单独行创建 Dataframe 的两列

sh7euo9m  于 2022-12-10  发布在  其他
关注(0)|答案(3)|浏览(112)

我有一个文本文件,其中每隔一行以“A”或“B”开头,如下所示

A810 WE WILDWOOD DR
B20220901BROOKE
A6223 AMHERST BAY
B20221001SARAI

我如何读取文本文件,并创建一个两列Pandas Dataframe ,其中以“A”开头的行是一列,以“B”开头的行也是一列。

|A                  |B              |
|:------------------|:--------------|
|A810 WE WILDWOOD DR|B20220901BROOKE|
|:------------------|---------------|
|A6223 AMHERST BAY  |B20221001SARAI |
|:------------------|---------------|
byqmnocz

byqmnocz1#

您可以使用pandas.DataFrame.shiftpandas.DataFrame.join来解决这个问题:

from io import StringIO    
import pandas as pd

s = """A810 WE WILDWOOD DR
B20220901BROOKE
A6223 AMHERST BAY
B20221001SARAI
"""

df = pd.read_csv(StringIO(s), header=None, names=["A"])
#in your case, df = pd.read_csv("path_of_your_txtfile", header=None, names=["A"])

out = (
            df
              .join(df.shift(-1).rename(columns= {"A": "B"}))
              .iloc[::2]
              .reset_index(drop=True)
       )
#输出:
print(out)
                     A                B
0  A810 WE WILDWOOD DR  B20220901BROOKE
1    A6223 AMHERST BAY   B20221001SARAI
7gcisfzg

7gcisfzg2#

使用pivot怎么样?

col = df[0].str.extract('(.)', expand=False)

out = (df
   .assign(col=col, idx=df.groupby(col).cumcount())
   .pivot(index='idx', columns='col', values=0)
   .rename_axis(index=None, columns=None)
)

输出量:

A                B
0  A810 WE WILDWOOD DR  B20220901BROOKE
1    A6223 AMHERST BAY   B20221001SARAI
hof1towb

hof1towb3#

另一种可能的解决方案 * 仅 * 在字符串在AB之间有规律地交替时才有效,如OP所述:

pd.DataFrame(df.values.reshape((-1, 2)), columns=list('AB'))

输出量:

A                B
0  A810 WE WILDWOOD DR  B20220901BROOKE
1    A6223 AMHERST BAY   B20221001SARAI

相关问题