import pandas
# Note these columns have 3 rows of values:
original = pandas.DataFrame({
'Age':[10, 12, 13],
'Gender':['M','F','F']
})
# Note this column has 4 rows of values:
additional = pandas.DataFrame({
'Name': ['Nate A', 'Jessie A', 'Daniel H', 'John D']
})
new = pandas.concat([original, additional], axis=1)
# Identical:
# new = pandas.concat([original, additional], ignore_index=False, axis=1)
print(new.head())
# Age Gender Name
#0 10 M Nate A
#1 12 F Jessie A
#2 13 F Daniel H
#3 NaN NaN John D
def fill_column(dataframe: pd.DataFrame, list: list, column: str):
dict_from_list = dict(enumerate(list)) # create enumertable object from list and create dict
dataFrame_asDict = dataframe.to_dict() # Get DataFrame as Dict
dataFrame_asDict[column] = dict_from_list # Assign specific column
return pd.DataFrame.from_dict(dataFrame_asDict, orient='index').T # Create new DataSheet from Dict and return it
5条答案
按热度按时间5w9g7ksd1#
如果使用accepted answer,您将丢失列名,如accepted answer example 所示,并在documentation中进行了描述(强调已添加):
所得轴将标记为0,...,n - 1。如果您正在连接对象,其中连接轴不具有有意义的索引信息,这将非常有用。
看起来列名(
'Name column'
)对原始海报/原始问题有意义。保存列名时,使用
pandas.concat
,但不要ignore_index
(ignore_index
的默认值为False
;所以你可以完全省略这个参数)。继续使用axis=1
:请注意John D没有年龄或性别。
hwamh0ep2#
使用concat并传递
axis=1
和ignore_index=True
:qvtsj1bj3#
示例
查找所有列表的长度
根据确定的最大长度调整所有内容的大小(本例中不包括
现在所有的列表都是相同的长度,并创建 Dataframe
最终输出为
4ktjp1zp4#
我遇到了同样的问题,两个不同的 Dataframe ,没有一个共同的列。我只需要把它们放在一个csv文件里。
*解决方案:您需要执行以下操作:
这样,您将看到
dfs
彼此并排(按列),每个都有自己的长度。ewm0tg9j5#
如果有人想替换不同大小的特定列,而不是添加它。
基于这个答案,我使用dict作为中间类型。Create Pandas Dataframe with different sized columns
如果要插入的列不是列表,但已经是字典,则可以省略相应的行。